Zip / Map列表中的列表

时间:2012-02-29 20:30:52

标签: python list map zip

我有以下列表:

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] ]

谢谢!

2 个答案:

答案 0 :(得分: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次计算。)

答案 1 :(得分:2)

使用列表推导是pythonic方式:

L = [ L1 + list for list in L2 ]