假设我有一个这样的列表:
rows=[['a1','a3','a5','a7'], ['a2','a4','a6','a8']]
我想从此创建新列表,所以它看起来像这样:
['a','1','a','2','a','3'....]
依此类推,直到'a8'为止,但我不想以任何方式对列表进行排序。
我的观点是我希望以这样的方式追加值:它从行的第一个列表中追加第一个项目,然后追加第一个项目 从第二个列表开始,然后返回第一个列表中的第二个项目,依此类推。
我该怎么做?
答案 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]]
从那里开始,我希望你可以将你的双字符列表重新组合成你想要的字符序列。