我有以下列表:
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] ]
谢谢!
答案 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 ]