Exercices en commençant à toucher Python. Essayer. foldl,foldr
box=lambda *x:x
unbox=lambda x:x[-1]
do=box
switch=unbox
foldl=(lambda f,acc,xs:
switch(
xs == [] and do( acc )
or do( foldl(f, f(acc, xs[0]), xs[1:]) )
)
)
foldr=(lambda f,xs,acc:
switch(
xs == [] and do( acc )
or do( foldr(f, xs[:-1], f(xs[-1], acc)) )
)
)
l'a fait. Je peux aller droit et manquer le rythme. Non, c'était incroyable la mise en conserve du livre H. Très très seul ...
Comparez-le avec la réduction ou la somme d'origine. Il semble que timeit puisse être utilisé, mais je ne savais pas quoi faire sur IDLE, donc je vais essayer de créer mon propre outil de mesure. Eh bien, ce sera un peu de pratique.
import time
measure_t=(lambda f , *arg :
(lambda m_start = time.time() ,
m_stop = time.time :
( f( *arg),
m_stop() - m_start ,
)[-1]
)()
)
l'a fait. Petit s'adapte au moment de l'exécution de la fonction.
Il semble qu'il sera utilisé même s'il est fait correctement.
>>> measure_t(foldl,lambda x,y:x+y,0,range(1,100))
0.00026679039001464844
>>> measure_t(foldr,lambda x,y:x+y,range(1,100),0)
0.000247955322265625
>>> measure_t(reduce,lambda x,y:x+y,range(100))
7.605552673339844e-05
>>> measure_t(sum,range(100))
6.198883056640625e-06
Il est bon d'utiliser les fonctions intégrées aussi silencieusement que possible. Cela signifie t-il ...
c'est tout.