[python-users] Unendliche Listen? Kein Problem!

do_not_reply_to_this_address at t-online.de do_not_reply_to_this_address at t-online.de
Sa Jun 6 14:42:43 CEST 2009


Moin,
ich habe eine Liste definiert die *alle* Fibonacci Zahlen enthält. Da 
Python mit den neuen iteratorkonzepten lazy ist kann man soetwas 
hinschreiben. Mich interessierte nur mal ob das geht, weil ich es in 
Haskell gesehen hatte.
Aber Python kann es auch. Nur die letzen drei Zeilen sind wichtig.
Gruß Dirk


import itertools
 
def tail(y):
	for i,x in enumerate(y):
		if i!=0:
			yield x
 
class MyList:
	def __init__(self,x):
		self.x=x
	def get_iter(self):
		i,j=itertools.tee(self.w)
		self.w=i
		return j
	def __getitem__(self, key): 
		if key<len(self.x):
			return self.x[key]
		else:
			it=self.get_iter()
			i=0
			while True:
				y=next(it)
				if (key-len(self.x))==i:
					return y
				i=i+1
 
	def append(self,w):
		self.w=w
 
 
 
c=MyList([1,2])
c.append(map(lambda x: x[0]+x[1], zip(c,tail(c))))
 
print (list(itertools.islice(c,0,10)))




Mehr Informationen über die Mailingliste python-users