实现了一下itertools.tee
闲得无事,写了个函数,实现了和 itertools.tee 类似的功能这个函数有什么用?
这个 tee 使用链表实现。
代码:class node:
def __init__(self,value):
self.value = value
self.next = None
class _tee:
def __init__(self,iter,node):
self.iter = iter
self.node = node
def __iter__(self):
return self
def __next__(self):
if self.node.next is None:
try:
self.node.next = self.node = node(self.iter.__next__())
except StopIteration as err:
self.node.next = NotImplemented
raise err
elif self.node.next is NotImplemented:
raise StopIteration
else:
self.node = self.node.next
return self.node.value
def tee(iterable,n=2,/):
temp = []
iterator = iter(iterable)
init = node(None)
while n:
temp.append(_tee(iterator,init))
n-=1
return tuple(temp) 二楼 def tee(iterable, n=2, /):
return tuple(iterable for _ in range(n))
哈哈哈 你的鱼币肿么变成负数了{:10_277:} zltzlt 发表于 2020-3-31 17:31
哈哈哈
这个不行的,>>> from itertools import tee
>>> a,b,c=tee(.__iter__(),3)
>>> list(a)
>>> list(b)
>>> list(c)
>>> def tee(iterable, n=2, /):
return tuple(iterable for _ in range(n))
>>> a,b,c=tee(.__iter__(),3)
>>> list(a)
>>> list(b)
[]
>>> list(c)
[]tee 需要复制出来的迭代器都能完整迭代一次
页:
[1]