复制列表N次

Fra*_*dez 0 python python-2.7

我想将列表重复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)

dni*_*t13 5

怎么样:

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