重复列表n次,按原始顺序排序

时间:2015-08-05 07:51:22

标签: python

我无法找到解决以下问题的方法 我有一个字符串列表,比如说

base_list = ['d', 'ssa', 'aaa', 'bb']

我希望重复此列表n次,但我需要保留原始列表的顺序。例如,对于n=2,结果应为:

final_list =  ['d', 'd', 'ssa', 'ssa', 'aaa', 'aaa', 'bb', 'bb']

编辑:不确定我是否应该将此问题标记为重复或不重复,因为在我看来,它比可能的副本Duplicate element in python list

更通用

5 个答案:

答案 0 :(得分:3)

>>> base_list = ['d', 'ssa', 'aaa', 'bb']
>>> n = 2
>>> [i for i in base_list for _ in xrange(n)]
['d', 'd', 'ssa', 'ssa', 'aaa', 'aaa', 'bb', 'bb']

在内部列表理解中,您使用n长度(内部循环)并通过具有外部列表的原始列表遍历范围。

答案 1 :(得分:0)

以下内容应该是您正在寻找的内容

>>> base_list = ['d', 'ssa', 'aaa', 'bb']
>>> final_list = []
>>> n = 10
>>> for item in base_list:
...     for i in range(n):
...             final_list.append(item)
... 
>>> final_list
['d', 'd', 'd', 'd', 'd', 'd', 'd', 'd', 'd', 'd', 'ssa', 'ssa', 'ssa', 'ssa', 'ssa', 'ssa', 'ssa', 'ssa', 'ssa', 'ssa', 'aaa', 'aaa', 'aaa', 'aaa', 'aaa', 'aaa', 'aaa', 'aaa', 'aaa', 'aaa', 'bb', 'bb', 'bb', 'bb', 'bb', 'bb', 'bb', 'bb', 'bb', 'bb']

答案 2 :(得分:0)

已经是explained here.

应用于您的代码:

>>> base_list = ['d', 'ssa', 'aaa', 'bb']
>>> from itertools import repeat
>>> final_list = [x for item in base_list for x in repeat(item, 2)]
>>> final_list
['d', 'd', 'ssa', 'ssa', 'aaa', 'aaa', 'bb', 'bb']

答案 3 :(得分:0)

我想来自标记问题(其中n = 2)的一个答案也适用于更通用的案例:

from itertools import chain, repeat

final_list = list(chain.from_iterable(repeat(item, n) for item in base_list))

答案 4 :(得分:0)

我的第一个想法是将它自己拉上拉链,然后展平:

import itertools
base_list = ['d', 'ssa', 'aaa', 'bb']
n = 2
list(itertools.chain.from_iterable(zip(*[base_list] * n)))