5

我有一个列表列表:

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

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

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

所以最终结果看起来像:

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

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

4

3 回答 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']]
于 2013-09-18T12:51:41.660 回答
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也很有用。

于 2013-09-18T13:06:05.433 回答
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)]
于 2013-09-18T13:08:44.983 回答