列表中每个成员重复一次

61 投票
12 回答
61212 浏览
提问于 2025-04-15 20:27

我想写一个函数,它可以读取一个列表,比如 [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]

注意:_ 通常用作一个占位符变量名,表示你不打算使用这个变量的内容。在这个例子中,它只是用来在外层循环每次运行时生成两个值。

要把这个列表变成一个生成器,只需把方括号换成圆括号就可以了。

撰写回答