将列表与列表列表合并

时间:2013-09-18 12:49:14

标签: python python-2.7

我有一份清单清单:

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

如何将其与单个列表合并,如:

['800','854','453']

最终结果如下:

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

最初我试过: zip(list_with_lists,list)但数据已被混淆

3 个答案:

答案 0 :(得分: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']]

答案 1 :(得分: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绝对是更加pythonic的解决方案。但是,有时您希望能够访问索引(是的,即使在Python中),因此了解enumerate也很有用。

答案 2 :(得分: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)]