我如何制作 for
循环或列表理解,以便每次迭代都给我两个元素?
l = [1,2,3,4,5,6]
for i,k in ???:
print str(i), '+', str(k), '=', str(i+k)
输出:
1+2=3
3+4=7
5+6=11
原文由 jackhab 发布,翻译遵循 CC BY-SA 4.0 许可协议
我如何制作 for
循环或列表理解,以便每次迭代都给我两个元素?
l = [1,2,3,4,5,6]
for i,k in ???:
print str(i), '+', str(k), '=', str(i+k)
输出:
1+2=3
3+4=7
5+6=11
原文由 jackhab 发布,翻译遵循 CC BY-SA 4.0 许可协议
2 回答5.2k 阅读✓ 已解决
2 回答1.1k 阅读✓ 已解决
4 回答1.5k 阅读✓ 已解决
3 回答1.3k 阅读✓ 已解决
3 回答1.3k 阅读✓ 已解决
2 回答910 阅读✓ 已解决
1 回答1.8k 阅读✓ 已解决
您需要一个
pairwise()
(或grouped()
)实施。或者,更一般地说:
在 Python 2 中,您应该导入
izip
来替代 Python 3 的内置zip()
函数。感谢 martineau 对 我的问题 的回答,我发现这是非常有效的,因为它只在列表上迭代一次,并且不会在此过程中创建任何不必要的列表。
注意:这不应该与
pairwise
Python 自己的itertools
文档 中的配方混淆,它产生s -> (s0, s1), (s1, s2), (s2, s3), ...
在 评论中指出的@as.lazy-对于那些想在 Python 3 上使用 mypy 进行类型检查的人来说,几乎没有什么补充: