为什么zip函数没有在python中给出预期的结果

时间:2018-05-01 10:26:19

标签: python python-3.x python-2.7

 ((0, 'a'), (0, 'g'))
 ((2, 'c'), (2, 'i')) 

对于上面的代码,我希望得到以下结果,因为我将zip(a,b)推进1:

iter1 = enumerate('abcdef')
iter2 = enumerate('ghi')

for i, j in zip(a, b):
        print(i, j)

但是,它仍然提供与以下代码相同的结果:

((0, 'a'), (0, 'g'))
((1, 'b'), (1, 'h'))
((2, 'c'), (2, 'i'))

输出:

{{1}}

为什么下一个语句(itertools.islice(zip(a,b),1,1),None)不会推进zip(a,b)?

1 个答案:

答案 0 :(得分:2)

3.6 zip返回迭代器,它按预期工作:

a = enumerate('abcdef')
b = enumerate('ghi')

for i, j in zip(a, b):
        print(i, j)

        if i[0] == 0:
            next(itertools.islice(zip(a, b), 1, 1), None)

当zip返回迭代器时,它将跳过(1,)元组。

2.7 zip返回一个元组列表,两个语句都不相关,因为zip(a,b)是单独的列表,两者都使用不相关的枚举序列。

因此,对于2.7,他们并没有跳过(1,)元组。

输出3.6:

(0, 'a') (0, 'g')
(2, 'c') (2, 'i')

输出2.7:

((0, 'a'), (0, 'g'))
((1, 'b'), (1, 'h'))
((2, 'c'), (2, 'i'))

您正在从演示输出中运行2.7。

https://docs.python.org/3.6/library/functions.html#zip https://docs.python.org/2.7/library/functions.html#zip