2012-02-29 16 views
3
列表的地圖列表

我有這樣的列表:郵編/ Python中

L1 = [list] 

L2 = [ [l1], [l2], ..., [ln] ] 

我需要這些名單現在映射到

L = [ [list+l1] , [list + l2] , ..., [list + ln] ] 

我只是重複L1 n次,然後荏苒他們。有人可以提示我更優雅的方式嗎?換句話說,我要做到這一點:

L=[] 
L.append(L1 + L2[0]) 
L.append(L1 + L2[1]) 
... 

這也將是很好,如果解決方案是穩健的以下變化:

L1 = [list1, list2, ..., listk] 

然後L變

[ [list1 + list2 + ... + listk + l1] , ..., [list1 + list2 + ... + listk + ln] ] 

謝謝!

+3

現在還不清楚L1'是普通列表還是包含單個其他列表的列表。如果你能提供真實的代碼作爲例子來避免這種模糊,那將是很好的。 – 2012-02-29 20:33:41

回答

4
L=[] 
L.append(L1 + L2[0]) 
L.append(L1 + L2[1]) 
... 

相當於

L = [ L1+item for item in L2 ] 

L1 = [list1, list2, ..., listk]如果是一個列表的列表,如

In [43]: L1 = [[1,2],[2,3]] 

然後list1 + list2 + ... + listk可以與sum(L1, [])形成:

In [44]: sum(L1,[]) 
Out[44]: [1, 2, 2, 3] 

In [45]: [1,2]+[2,3] 
Out[45]: [1, 2, 2, 3] 

因此,在這種情況下,你可以使用

L1_sum = sum(L1, []) 
L = [ L1_sum+item for item in L2 ] 

(旁白:也可以使用L = [ sum(L1, [])+item for item in L2 ]但這將重複sum(L1, [])計算一次,每個項目L2。)

+0

謝謝。我會去:L = [list1 + list2 ... + listk +項目在L2] – Kevin 2012-02-29 20:39:30

2

使用列表理解是pythonic方式:

L = [ L1 + list for list in L2 ]