如何在python中复制列表的元素?

时间:2015-10-18 22:31:24

标签: python list

我想知道是否有更优雅的方式来做到以下几点。例如,列表理解。

考虑一个简单的清单:

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']

5 个答案:

答案 0 :(得分:4)

您可以使用

NSOrderedSet

这与您的代码相同。它会将NSOrderedSetduplic = [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']