python分配复杂对象

时间:2015-07-14 16:29:56

标签: python

我有以下代码可以正常工作。但是,当我在语句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 

1 个答案:

答案 0 :(得分:5)

B迭代器。如果你要求list(B),那么你将耗尽迭代器,导致它在下次list(B)时变空。

根据经验法则:在处理迭代器时,您很少需要将它们分配给名称。通常,您只需使用for-in迭代迭代器,或者使用list将迭代器转换为列表。