我想知道是否有更优雅的方式来做到以下几点。例如,列表理解。
考虑一个简单的清单:
l = ["a", "b", "c", "d", "e"]
我想复制每个元素n
次。因此我做了以下事情:
n = 3
duplic = list()
for li in l:
duplic += [li for i in range(n)]
最后重复是:
['a', 'a', 'a', 'b', 'b', 'b', 'c', 'c', 'c', 'd', 'd', 'd', 'e', 'e', 'e']
答案 0 :(得分:4)
您可以使用
NSOrderedSet
这与您的代码相同。它会将NSOrderedSet
(duplic = [li for li in l for _ in range(n)]
)的每个元素添加n次(l
)。
答案 1 :(得分:1)
您可以使用:
l = ["a", "b", "c", "d", "e"]
n=3
duplic = [ li for li in l for i in range(n)]
每次在python中编写
duplic = list()
for li in l:
duplic +=
很有可能通过列表理解来完成。
答案 2 :(得分:1)
试试这个:
l = ["a", "b", "c", "d", "e"]
print sorted(l * 3)
输出:
['a','a','a','b','b','b','c','c','c','d','d','d ','e','e','e']
答案 3 :(得分:0)
from itertools import chain
n = 4
>>>list(chain.from_iterable(map(lambda x: [x]*n,l)))
['a', 'a', 'a', 'a', 'b', 'b', 'b', 'b', 'c', 'c', 'c', 'c', 'd', 'd', 'd', 'd', 'e', 'e', 'e', 'e']
答案 4 :(得分:0)
In [12]: l
Out[12]: ['a', 'b', 'c', 'd', 'e']
In [13]: n
Out[13]: 3
In [14]: sum((n*[item] for item in l), [])
Out[14]: ['a', 'a', 'a', 'b', 'b', 'b', 'c', 'c', 'c', 'd', 'd', 'd', 'e', 'e', 'e']