zip通过一个循环“耗尽”

时间:2016-09-05 03:41:56

标签: python for-loop zip

当我运行python脚本时,一个奇怪的输出让我困惑,这是核心测试代码:

a = [1,2,3]
b = [4,5,6]
c = zip(a,b)
for i in range(2):
    for x,y in c:
        print(i,x,y)

仅输出:

0 1 4
0 2 5
0 3 6

我希望看到以i = 1开头的结果。

2 个答案:

答案 0 :(得分:1)

从python3开始,c是一个生成器。

所以一旦你完成它,它就是空的。因此,为什么内循环只执行一次。

请参阅https://docs.python.org/3.3/library/functions.html#zip

答案 1 :(得分:0)

a = [1,2,3]
b = [4,5,6]
c = zip(a,b)
for i,(x,y) in enumerate(c):
    print(i, x, y)

output:
0 1 4
1 2 5
2 3 6