如何在python中重复列表中的数字?

ED3*_*314 5 python list

我有一个清单

 A = [1,6,3,8,5,5,2,1,2,10]
Run Code Online (Sandbox Code Playgroud)

我想重复这样的数字:

A = [1,6,6,6,6,6,6,3,3,3,8,8,8,8,8,8,8,8,..... so on] 
Run Code Online (Sandbox Code Playgroud)

即1重复一次,6重复六次,3重复三次等等......

我试过:

B=np.concatenate([([x]*x) for x in A], axis=0) 
Run Code Online (Sandbox Code Playgroud)

但它乘以相应的数字,我得到了这个结果:

  B = [1,36,36,36,36,36,36,9,9,9,.....so on]
Run Code Online (Sandbox Code Playgroud)

当我在做:

B=np.concatenate([([x]*3) for x in A], axis=0)
Run Code Online (Sandbox Code Playgroud)

这给了我:

B = [1,1,6,6,3,3,8,8... so on]
Run Code Online (Sandbox Code Playgroud)

我在这里做错了什么?

Ant*_*uis 13

您可以在numpy不使用for循环的情况下执行此操作。

np.repeat(a, repeats)将重复输入数组,a根据repeats哪个指定每个元素的重复次数。

import numpy as np
A = [1,6,3,8,5,5,2,1,2,10]
B = np.repeat(A,A)
Run Code Online (Sandbox Code Playgroud)

输出:

>>> array([ 1,  6,  6,  6,  6,  6,  6,  3,  3,  3,  8,  8,  8,  8,  8,  8,  8,
    8,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  2,  2,  1,  2,  2, 10,
   10, 10, 10, 10, 10, 10, 10, 10, 10])
Run Code Online (Sandbox Code Playgroud)


小智 6

使用NumPy的repeat函数可以得到解决方案

import numpy as np
np.repeat(A, A)
Run Code Online (Sandbox Code Playgroud)


Tec*_*nic 4

你应该使用嵌套循环

l  = [1, 6, 3]
nl = []
for number in l:
    for i in range(number):
        nl.append(number)
print(nl)
Run Code Online (Sandbox Code Playgroud)

或使用列表理解

l = [1,6,3]
nl = [number  for number in l for i in range(number)]
#[1, 6, 6, 6, 6, 6, 6, 3, 3, 3] 
Run Code Online (Sandbox Code Playgroud)