itertools tee()迭代器拆分

我很困惑tee()是如何工作的。itertools tee()迭代器拆分

l = [1, 2, 3, 4, 5, 6] 

iterators3 = itertools.tee(l, 3)

for i in iterators3:

print (list(i))

输出:

[1, 2, 3, 4, 5, 6] 

[1, 2, 3, 4, 5, 6]

[1, 2, 3, 4, 5, 6]

这是确定。但是,如果我尝试:

a, b, c = itertools.tee(l) 

我得到这个错误:

Traceback (most recent call last): 

File "<stdin>", line 1, in <module>

ValueError: not enough values to unpack (expected 3, got 2)

为什么?

回答:

tee需要两个参数,一个迭代器和一个数字,它将复制实际的迭代器(与他的上下文)的次数,你作为传递参数,所以你不能真正解开更多的发电机比开球创造:

a,b = tee(l) #this is ok, since it just duplicate it so you got 2 

a,b,c = tee(l, 3) #this is also ok, you will get 3 so you can unpack 3

a,b = tee(l, 3) #this will fail, tee is generating 3 but you are trying to unpack just 2 so he dont know how to unpack them

在Python 3中,你可以解开这样的:

a, *b = tee(l, 3) 

其中a将从teeb举行第一次迭代将举行迭代器的其余部分s在列表中。

以上是 itertools tee()迭代器拆分 的全部内容, 来源链接: utcz.com/qa/262480.html

回到顶部