在python中交替迭代两个列表

时间:2017-04-03 21:48:22

标签: python loops

假设我有一个这样的列表:

rows=[['a1','a3','a5','a7'], ['a2','a4','a6','a8']]

我想从此创建新列表,所以它看起来像这样: ['a','1','a','2','a','3'....]依此类推,直到'a8'为止,但我不想以任何方式对列表进行排序。

我的观点是我希望以这样的方式追加值:它从行的第一个列表中追加第一个项目,然后追加第一个项目 从第二个列表开始,然后返回第一个列表中的第二个项目,依此类推。

我该怎么做?

2 个答案:

答案 0 :(得分:3)

您可以使用zip,然后在列表解析中使用嵌套for来加入和解包项目:

>>> [x for i, j in zip(*rows) for x in i+j]
['a', '1', 'a', '2', 'a', '3', 'a', '4', 'a', '5', 'a', '6', 'a', '7', 'a', '8']

如果您从元组中的zip收集所有项目,然后使用str.join,则可以处理包含不同数量的子列表的列表:

>>> [x for i in zip(*rows) for x in ''.join(i)]
['a', '1', 'a', '2', 'a', '3', 'a', '4', 'a', '5', 'a', '6', 'a', '7', 'a', '8']

答案 1 :(得分:1)

使用带有嵌套迭代的列表推导:

merged = [rows[i][j] for j in len(rows) for i in len(rows[0]]

从那里开始,我希望你可以将你的双字符列表重新组合成你想要的字符序列。