合并一个列表和一个包含多个列表的列表

5

我有一个列表嵌套的列表:

[['John', 'Sergeant '], ['Jack', 'Commander '], ['Jill', 'Captain ']]

我该如何将它与单个列表合并,例如:
['800','854','453']

所以最终结果应该如下所示:
[['John', 'Sergeant', '800'], ['Jack', 'Commander', '854'], ['Jill', 'Captain', '453']]

最开始我尝试使用:zip(list_with_lists,list) 但是数据被混淆了。

3个回答

29
a = [['John', 'Sergeant '], ['Jack', 'Commander '], ['Jill', 'Captain ']]
b = ['800', '854', '453']
c = [x+[y] for x,y in zip(a,b)]
print c

结果:

[['John', 'Sergeant ', '800'], ['Jack', 'Commander ', '854'], ['Jill', 'Captain ', '453']]

4

使用enumerate而不是zip的解决方案:

a = [['John', 'Sergeant '], ['Jack', 'Commander '], ['Jill', 'Captain ']]
b = ['800','854','453']
c = [a[i]+[bi] for i,bi in enumerate(b)]

在这种情况下,使用 zip 显然是更符合Python风格的解决方案。然而有时候你需要访问索引(是的,即使在Python中也是如此),所以了解 enumerate 也很有用。


1

range替代zip

a = [['John', 'Sergeant '], ['Jack', 'Commander '], ['Jill', 'Captain ']]
b = ['800','854','453']
c = [a[x]+[b[x]] for x in range(len(b))]
print c

或更新原始列表:
[a[x].append(b[x]) for x in range(3)]

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接