通过n扩展列表的最小方法

Sch*_*ken 10 python list

我想扩展一个列表

[1,2,3,4]
Run Code Online (Sandbox Code Playgroud)

n

例如,对于n = 2:

[1,1,2,2,3,3,4,4]
Run Code Online (Sandbox Code Playgroud)

我正在寻找实现这一目标的最小方法,而无需任何额外的库.它很容易做一个循环并将每个项目附加n次到一个新列表......但还有另一种方法吗?

ham*_*ene 13

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

  • 这里有一个可变对象的警告.如果你让我等于``[1,2,[3]]``然后按照你的方法,然后做``test2 [4] .append(4)``你会得到``[1,1,2, 2,[3,4],[3,4]]``.显然,这在大多数情况下不会成为问题,但值得注意. (2认同)

Fel*_*ing 5

itertools [docs]救援:

expanded = list(chain(*izip(*tee(l, n))))
Run Code Online (Sandbox Code Playgroud)

  • 哇.尽管我喜欢`itertools`,这让我很头疼:) (2认同)