我无法找到解决以下问题的方法 我有一个字符串列表,比如说
base_list = ['d', 'ssa', 'aaa', 'bb']
我希望重复此列表n
次,但我需要保留原始列表的顺序。例如,对于n=2
,结果应为:
final_list = ['d', 'd', 'ssa', 'ssa', 'aaa', 'aaa', 'bb', 'bb']
编辑:不确定我是否应该将此问题标记为重复或不重复,因为在我看来,它比可能的副本Duplicate element in python list
更通用答案 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)
应用于您的代码:
>>> 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)))