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 に答える