我有两个列表 list1
和 list2
数字,我想用相同的指令迭代它们。像这样:
for item in list1:
print(item.amount)
print(item.total_amount)
for item in list2:
print(item.amount)
print(item.total_amount)
但这感觉是多余的。我知道我可以写 for item in list1 + list2:
,但它有运行时间的代价。
有没有办法在没有空闲时间的情况下做到这一点?
原文由 zardav 发布,翻译遵循 CC BY-SA 4.0 许可协议
这可以通过
itertools.chain
来完成:哪个将打印:
根据文档,
chain
执行以下操作:如果您的列表在列表中,则
itertools.chain.from_iterable
可用:这会产生相同的结果。
如果您不想为此导入模块,则为它编写一个函数非常简单:
这需要 Python 3,对于 Python 2,只需
yield
他们使用循环返回:除了前面的,Python
3.5
及其扩展的解包概括,也允许在列表文字中解包:虽然这比
l1 + l2
稍微快一点,但它仍然构建一个列表,然后将其丢弃;只把它作为最终解决方案。