复制列表中的元素

jd9*_*d94 2 python replication list

说我有这个

b = 3
l = [1, 2]
Run Code Online (Sandbox Code Playgroud)

我想修改l,以便每个元素出现的次数与b一样多.以便:

l = [1, 1, 1, 2, 2, 2]
Run Code Online (Sandbox Code Playgroud)

我用过这个:

for x in l:
  for m in range(b):
    l.append(x)
Run Code Online (Sandbox Code Playgroud)

但它导致了无限循环.任何帮助,将不胜感激.我希望你们给出想法而不是给我代码.谢谢.

Scy*_*dor 11

我的2美分:

实现这一目标的另一种方法是利用您可以在Python中乘以列表的事实.

>>> l = [1, 2, 3]
>>> [1, 2, 3] * 3
[1, 2, 3, 1, 2, 3, 1, 2, 3]
Run Code Online (Sandbox Code Playgroud)

sorted函数的简单调用允许对其进行排序:

>>> b = 3    
>>> l = [1, 2]
>>> sorted(l * b)
[1, 1, 1, 2, 2, 2]
Run Code Online (Sandbox Code Playgroud)


kar*_*ikr 8

您可以使用列表理解:

>>> b = 3
>>> x = [1, 2]
>>> l = [x for x in l for _ in range(b)]
>>> l
[1, 1, 1, 2, 2, 2]
>>>
Run Code Online (Sandbox Code Playgroud)

现在,解决您的问题:

您可能想要创建一个新列表,并附加到该列表

>>> l  = [1, 2]
>>> y = []
>>> b = 3
>>> for x in l:
...   for i in range(b):
...     y.append(x)
...
>>> y
[1, 1, 1, 2, 2, 2]
Run Code Online (Sandbox Code Playgroud)

我更喜欢列表理解方法.