2017-04-03 153 views
0

比方说,我有一个这样的名单:迭代两个列表交替蟒蛇

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

我要创建这个新的列表,所以它看起来像这样: ['a','1','a','2','a','3'....]依此类推,直至“A8 '按照这个顺序,但我不想以任何方式对列表进行排序。

我的观点是我想追加值的方式,它追加行中的第一个列表中的第一个项目,然后从第二个列表追加第一个项目 ,然后返回到第二个项目从第一个列表,等等。

我该怎么做?

+0

我觉得你的解释表明您希望[ 'A1', 'A2', 'A3', 'A4' ...]作为的结果,但你的例子是不同的..你想达到什么目的? –

回答

3

您可以使用zip,然后再加入并以列表理解解开一个嵌套的项目为:

>>> [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

使用列表理解与嵌套迭代:

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

从那里,我希望你能重新投你的两个字符的列表成你想要的字符序列。