如何复制列表项一定次数?

时间:2014-02-28 19:58:23

标签: python-2.7

我列出了大约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。

3 个答案:

答案 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