Python 如何在列表的元组中按元素循环?

Python 如何在列表的元组中按元素循环?,python,python-2.x,Python,Python 2.x,我有一个函数,它返回两个列表的元组 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 有没有一种更

我有一个函数,它返回两个列表的元组

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

有没有一种更漂亮更像蟒蛇的方法来达到这个目的

当然可以,您可以在zip通话中直接解压缩
两个列表()

for i, y in zip(*two_lists()):
    print i, y

这是实现这一点的惯用方法。

如果您想让它更简洁,您可以在zip(*two_list())中对i,y执行
,这将在适当的位置对元组进行备份。否则,如果你想说
zip
不是pythonic,我不同意。编辑以添加Python 2标记。请,请,请不要使用列表理解的副作用。这是非常糟糕的做法,而且效率低下。从来没有一个时候这是正确的解决方案。因此,有一个带有
[None,None,None,None]
的结果列表是可以的?这似乎不是最好的建议。我建议不要使用列表comp解决方案。另一种不错的Python3方法(仅限Python3.5或更高版本)应该可以满足所有上述问题:
print(*(I,y)for I,y in zip(*twolists()),sep='\n')