我想将列表重复n次,同时保留列表本身的顺序。例如,我现在所拥有的一切都行不通,也没有给我一个错误。
def duplicate(testList, n):
y = 0
x = len(testList)
newList=[]
while y < x:
for z in range (0, n):
newList.append(testList[y])
y = y + 1
return newList
duplicate([1,2,3], 3)
Run Code Online (Sandbox Code Playgroud)
此后,我不确定在哪里修复它。
所需的输出是:
[1,1,1,2,2,2,3,3,3]
Run Code Online (Sandbox Code Playgroud)
怎么样:
>>> def duplicate(testList, n):
... return [ele for ele in testList for _ in range(n)]
...
>>> duplicate([1,2,3],2)
[1, 1, 2, 2, 3, 3]
>>> duplicate([1,2,3],3)
[1, 1, 1, 2, 2, 2, 3, 3, 3]
Run Code Online (Sandbox Code Playgroud)
这将返回一个列表,其中每个元素在列表中重复n次,但是请注意这一点
>>> duplicate([[1,2,3]],3)
[[1, 2, 3], [1, 2, 3], [1, 2, 3]]
Run Code Online (Sandbox Code Playgroud)
或者,如果您想复制列表本身:
>>> def duplicate(testList, n):
... return testList*n
...
>>> x=[1,2,3]
>>> duplicate(x,3)
[1, 2, 3, 1, 2, 3, 1, 2, 3]
Run Code Online (Sandbox Code Playgroud)
该testList*n会创建包含的新列表testList n的次数,这是相当于(testList + testList + ....)n倍