((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)?
答案 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