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')