如何在Python中遍历两个或多个列表的元组项?

13 投票
9 回答
6978 浏览
提问于 2025-04-15 13:17

具体来说,我有两个字符串的列表,我想把它们合并成一个字符串,每一行是来自这两个列表的下两个字符串,中间用空格隔开:

a = ['foo1', 'foo2', 'foo3']
b = ['bar1', 'bar2', 'bar3']

我想要一个叫做 combine_to_lines() 的函数,它会返回:

"""foo1 bar1
foo2 bar2
foo3 bar3"""

我承认我已经解决了这个问题,所以我打算把答案发出来。不过,也许其他人有更好的方法,或者能发现我方法中的缺陷。

更新:我上面的例子简化得太过了。在我实际的问题中,行的格式更复杂,需要对 zip() 返回的元组进行拆解。不过,感谢 mhawke 提出了这个例子的最简单解决方案。

9 个回答

7
>>> a = ['foo1', 'foo2', 'foo3']
>>> b = ['bar1', 'bar2', 'bar3']
>>> for i in zip(a,b):
...   print ' '.join(i)
...
foo1 bar1
foo2 bar2
foo3 bar3

当然可以!请把你想要翻译的内容发给我,我会帮你用简单易懂的语言解释清楚。

9

zip函数的作用是“返回一个包含元组的列表,其中第i个元组包含每个输入序列或可迭代对象的第i个元素。”

def combine_to_lines(list1, list2):
    return '\n'.join([' '.join((a, b)) for a, b in zip(list1, list2)])
15

其实没必要把zip返回的元组拆开再重新打包:

'\n'.join(' '.join(x) for x in zip(a, b))

撰写回答