这似乎是Python的捷径。我想将一个项目附加到列表N次,实际上是这样做的:
l = []
x = 0
for i in range(100):
l.append(x)
在我看来应该有一个“优化”的方法,如:
l.append_multiple(x, 100)
有吗?
答案 0 :(得分:91)
对于不可变数据类型:
l = [0] * 100
# [0, 0, 0, 0, 0, ...]
l = ['foo'] * 100
# ['foo', 'foo', 'foo', 'foo', ...]
对于通过引用存储的值,您可能希望稍后修改(如子列表或dicts):
l = [{} for x in range(100)]
(第一种方法对于常量值(如整数或字符串)只是一个好主意的原因是因为在使用<list>*<number>
语法时只有一个浅的副本,因此如果你做了类似{ {1}},你最终会得到100个对同一个字典的引用 - 所以改变它们中的一个会改变它们。因为int和字符串是不可变的,这对它们来说不是问题。)
如果要添加到现有列表,可以使用该列表的[{}]*100
方法(结合通过上述技术生成要添加的事物列表):
extend()
答案 1 :(得分:18)
答案 2 :(得分:4)
Itertools重复结合列表扩展。
from itertools import repeat
l = []
l.extend(repeat(x, 100))
答案 3 :(得分:3)
你可以用列表理解
来做到这一点l = [x for i in range(10)];
答案 4 :(得分:1)
我不得不走另一条路线进行任务,但这就是我最终的目标。
my_array += ([x] * repeated_times)
答案 5 :(得分:0)
l = []
x = 0
l.extend([x]*100)
答案 6 :(得分:0)
您可以多次添加这样的任何值:
a = [1,2,3]
b = []
#if you want to add on item 3 times for example:
for i in range(len(a)):
j = 3
while j != 0:
b.append(a[i])
j-=1
#now b = [1,1,1,2,2,2,3,3,3]