列表中每个成员重复一次
我想写一个函数,它可以读取一个列表,比如 [1,5,3,6,...]
,然后输出一个新的列表 [1,1,5,5,3,3,6,6,...]
。有没有什么好主意可以实现这个功能?
12 个回答
17
numpy.repeat
可以满足你的需求:
import numpy as np
yourList = [1,5,3,6]
n = 2
list(np.repeat(yourList, n))
结果是:
[1, 1, 5, 5, 3, 3, 6, 6]
如果你不介意使用 numpy 数组的话,最后一行的 list()
调用可以省略。
22
>>> a = [1, 2, 3]
>>> b = []
>>> for i in a:
b.extend([i, i])
>>> b
[1, 1, 2, 2, 3, 3]
或者
>>> [a[i//2] for i in range(len(a)*2)]
[1, 1, 2, 2, 3, 3]
85
>>> a = range(10)
>>> [val for val in a for _ in (0, 1)]
[0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9]
注意:_
通常用作一个占位符变量名,表示你不打算使用这个变量的内容。在这个例子中,它只是用来在外层循环每次运行时生成两个值。
要把这个列表变成一个生成器,只需把方括号换成圆括号就可以了。