我列出了大约2000个数字的大清单。这只是我想要的一个例子。
我有list1=[1,2,3,4]
和list2=[1,3,2,5]
。我想要它,以便list1[i]
在新列表中使用list2[i]
次。
因此,对于此示例,新列表将为:list3=[1,2,2,2,3,3,4,4,4,4,4]
新list3
有1x1,3x2,2x3,5x4。
答案 0 :(得分:2)
这不是很漂亮,并不是特别容易理解,但有效:
>>> list1 = [1, 2, 3, 4]
>>> list2 = [1, 3, 2, 5]
>>> import itertools
>>> list3 = list(itertools.chain(*[[list1[i]] * count for i, count in enumerate(list2)]))
>>> list3
[1, 2, 2, 2, 3, 3, 4, 4, 4, 4, 4]
简要说明......
您可以将列表相乘:
>>> [1] * 3
[1, 1, 1]
在列表推导中使用它会得到一个列表列表:
>>> [[list1[i]] * count for i, count in enumerate(list2)]
[[1], [2, 2, 2], [3, 3], [4, 4, 4, 4, 4]]
然后您可以使用itertools将列表展平,如上所述。
答案 1 :(得分:0)
list1=[1,2,3,4]
list2=[1,3,2,5]
list3 = []
for a, b in zip(list1, list2):
for i in range(b):
list3.append(a)
list3 == [1, 2, 2, 2, 3, 3, 4, 4, 4, 4, 4]
答案 2 :(得分:0)
另一种选择:
list1=[1,2,3,4]
list2=[1,3,2,5]
z=[]
for x,y in zip(list1,list2):
z.extend([x] * y)
print z