Python:追加项目列表N次

这似乎是Python将有一个快捷方式。 我想追加一个项目到列表N次,有效地做到这一点:

l = [] x = 0 for i in range(100): l.append(x) 

在我看来,应该有一个“优化”的方法,如:

 l.append_multiple(x, 100) 

在那儿?

对于不可变数据types:

 l = [0] * 100 # [0, 0, 0, 0, 0, ...] l = ['foo'] * 100 # ['foo', 'foo', 'foo', 'foo', ...] 

对于通过引用存储的值,您可能希望稍后进行修改(如子列表或字典):

 l = [{} for x in range(100)] 

(为什么第一个方法对于常量值只是一个好主意,比如整数或string,是因为当使用<list>*<number>语法时,只有一个浅拷贝,所以如果你做了类似[{}]*100 ,你最终会得到100个对同一个字典的引用 – 所以改变其中的一个会改变它们,因为int和string是不可变的,这对他们来说不是问题。

如果要添加到现有列表中,可以使用该列表的extend()方法(与通过上述技术添加的列表的生成相结合):

 a = [1,2,3] b = [4,5,6] a.extend(b) # a is now [1,2,3,4,5,6] 

使用extend来添加一个列表理解到最后。

 l.extend([x for i in range(100)]) 

有关更多信息,请参阅Python文档 。

Itertools重复与列表扩展结合。

 from itertools import repeat l = [] l.extend(repeat(x, 100)) 

你可以用列表理解来做到这一点

 l = [x for i in range(10)]; 

我不得不去另外一条路线去做一个任务,但这是我最终的结果。

 my_array += ([x] * repeated_times)