在python中重复列表N次?

时间:2019-09-26 09:11:41

标签: python

我有一个列表[0, 1, 2, 3, 4, 5, 6, 7, 8, 9],我想重复一次列表n
例如,如果n = 2我想要[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9]作为输出。

除了appendfor循环以外,Python中是否有任何内置解决方案,因为n的值也可能会达到1000?

4 个答案:

答案 0 :(得分:6)

Python允许列表的乘法:

my_list = [0,1,2,3,4,5,6,7,8,9]
n = 2
print(my_list*n)

输出:

  

[0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9]

答案 1 :(得分:2)

如果生成的列表很大,最好使用生成器,这样就可以一次生成一个项目,而不必在内存中创建整个大列表:

from itertools import islice, cycle


def repeat(lst, times):
    return islice(cycle(lst), len(lst)*times)

lst = [0, 1, 2, 3, 4, 5]

for item in repeat(lst, 3):
    print(item, end=' ')

#0 1 2 3 4 5 0 1 2 3 4 5 0 1 2 3 4 5 

您仍然可以根据需要创建列表:

print(list(repeat(lst, 3)))
# [0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5]

工作原理:itertools.cycle将无限期地在lst上循环,而我们仅使用itertools.islice保留len(lst) * times的第一项

答案 2 :(得分:1)

只需使用乘法

[1,2,3] * 3
# [1,2,3,1,2,3,1,2,3]

答案 3 :(得分:1)

这是实现它的方法。

arr1=[1,2]
n=2
arr2=arr1*n #number of times you want to repeat
print(arr2)

输出:

  

[1,2,1,2]