【发布时间】:2016-10-07 03:20:31
【问题描述】:
我有一个返回两个列表元组的函数
def two_lists():
return [1, 2, 3], ['a', 'b', 'c']
我想以类似的方式循环遍历元组
for v1, v2 in two_lists():
print v1, v2
output:
1, a
2, b
3, c
我发现的唯一方法我觉得相当麻烦!
a, b = two_lists()
for i, y in zip(a, b):
print i, y
有没有更漂亮、更 Pythonic 的方式来实现这一点?
【问题讨论】:
-
如果你想让它更简洁,你可以做
for i, y in zip(*two_lists()),它将原地打包元组。否则,如果你想说zip不是pythonic,我不同意。 -
编辑添加 Python 2 标签。
-
请,请,请不要使用列表推导来解决它们的副作用。这是非常糟糕的做法和低效。永远不会有正确的解决方案。
-
那么,有一个带有
[None, None, None, None]的结果列表可以吗?这似乎不是最好的建议。我建议不要使用该列表组合解决方案。 -
另一种不错的 python 3 方式(仅限 Python 3.5 或更高版本),应该可以满足上述所有投诉:
print( *((i,y) for i,y in zip(*twolists()), sep = '\n')
标签: python python-2.x