In lista infinita?

andrea andrea.crotti.0 at gmail.com
Tue Dec 8 11:39:13 EST 2009


Ho notato che i generatori anche se infiniti non si lamentano se usati
in modo potenzialmente "pericoloso".
Dato:
m = (sum(xrange(1,x)) for x in count(1))

10 in m -> True
ma se gli passo un valore che non c'è naturalmente loopa all'infinito
perché non ha modo di sapere se prima o poi troverà il numero.

Ora assumendo una sequenza non decrescente con questa funzioncina si può
effettivamente avere una "pigrizia" a là haskell.

--8<---------------cut here---------------start------------->8---
def in_inf(gen, el):
   x = dropwhile(lambda x: x < el, gen)
   if x.next() == el:
       return True
   else:
       return False
--8<---------------cut here---------------end--------------->8---

Che dite può andare?
Magari si potrebbe passare la funzione di controllo come argomento per
generalizzarla.
Altri miglioramenti/utilizzi trasversali?



More information about the Python-list mailing list