我有以下代码可以正常工作。但是,当我在语句print list(B)
中删除注释时,它会失败并返回为空列表。我想也许X正在获取作为print语句的一部分执行的list(B)
的地址位置。
import itertools
A = [1,2,3]
B = itertools.product(A,repeat=2)
print str(B)
#print list(B)
X = list(B)
print X
<itertools.product object at 0x7f5ac40a9a50>
[(1, 1), (1, 2), (1, 3), (2, 1), (2, 2), (2, 3), (3, 1), (3, 2), (3, 3)]
Command took 0.03s
答案 0 :(得分:5)
B
是迭代器。如果你要求list(B)
,那么你将耗尽迭代器,导致它在下次list(B)
时变空。
根据经验法则:在处理迭代器时,您很少需要将它们分配给名称。通常,您只需使用for-in
迭代迭代器,或者使用list
将迭代器转换为列表。