2017-06-13 58 views
2

可以说我有一个列表一个并列出b的列表:从名单在Python添加项目清单列表

a = ['1','2','3'] 
b = [['Hello'],['I'],['am']] 

我怎么可能去获得以下输出?

b = [['Hello','1'],['I','2'],['am','3']] 

我已经尝试过许多不成功的事情,如下所示。

for i in a: 
    for j in range(b): 
     j.append(i[j]) 
print(b) 

编辑: 我一直在寻找一种方式来做到这一点,如果两个列表长度相同,其中重复的不回答的不是。如果你看看接受的答案的评论,你会找到解决方案。

回答

1

你可以使用一个列表理解与zip:意见后

r = [[s[0], n] for (n, s) in zip(a, b)] 

更新:

,如果你的列表的长度是相同的不是你可以使用itertools.zip_longest和类似

from itertools import zip_longest 

r = [s if n is None else 
    [n] if s is None else 
    [s[0], n] for (n, s) in zip_longest(a, b)] 
+0

如果列表的长度不是相同的,这个工作是否会起作用? – briyan

+0

另一种选择:'[u + [v] for u,v in zip(b,a)]' –

+1

@briyan如果列表长度不一样,你想用剩余的东西做什么? –

0

试试这个;

>>> a = ['1','2','3'] 
>>> b = [['Hello'],['I'],['am']] 
>>> ab = [[b[i][0], a[i]] for i in range(len(a))] 
+0

如果列表不具有相同的长度,此项工作是否可行? – briyan

+1

不,它不会。如果您的列表长度不相同,您将需要修改。 –