2017-05-25 127 views
0

我有兩個列表:如何將列表與列表配對?

xy = [[1,2],[3,4],[5,6]] 
z = [1,3,5] 

我想將它們合併獲得:

xyz = [[1,2,1],[3,4,3],[5,6,5]] 

xyz = [(1,2,1),(3,4,3),(5,6,5)] 

下面是我做到這一點:

for i,lst in enumerate(xy): 
    lst.append(z[i]) 
xy 

是否有任何整潔的方式來做到這一點,而不使用for循環或什麼?

+0

很顯然你不能這樣做沒有環。 – ForceBru

回答

5

如果您正在使用Python 3.5+,您可以使用PEP 448

xyz = [(*a, b) for a, b in zip(xy, z)] 

這也採用list comprehensionzip(),使之成爲簡單的一行。


如果你不想使用for循環可言,實際上是用函數式編程和map()的方式,但是這可能是不走(Python不利於函數式編程)的最佳方式:

xyz = map(lambda a, b: a + [b], xy, z) 
3

這可能是一個更合適的方法:

Ret = [a + [b] for a, b in zip(xy, z)] 
0

列表理解無線日enumerate功能:

result = [l+[z[k]] for k,l in enumerate(xy)] 
print(result) 

輸出:

[[1, 2, 1], [3, 4, 3], [5, 6, 5]] 
0

我建議列表內涵的可讀性:

[a + [b] for a, b in zip(xy, z)]