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)