这似乎是Python有一个捷径.我想将一个项目附加到列表N次,实际上这样做:
l = []
x = 0
for i in range(100):
l.append(x)
Run Code Online (Sandbox Code Playgroud)
在我看来应该有一个"优化"的方法,如:
l.append_multiple(x, 100)
Run Code Online (Sandbox Code Playgroud)
在那儿?
Amb*_*ber 103
对于不可变数据类型:
l = [0] * 100
# [0, 0, 0, 0, 0, ...]
l = ['foo'] * 100
# ['foo', 'foo', 'foo', 'foo', ...]
Run Code Online (Sandbox Code Playgroud)
对于通过引用存储的值,您可能希望稍后修改(如子列表或dicts):
l = [{} for x in range(100)]
Run Code Online (Sandbox Code Playgroud)
(第一种方法对于常量值(如整数或字符串)只是一个好主意的原因是因为在使用<list>*<number>
语法时只有一个浅的副本,因此如果你做了类似的事情[{}]*100
,你最终会得到100个引用到同一个字典 - 所以更改其中一个将改变它们.由于整数和字符串是不可变的,这对他们来说不是问题.)
如果要添加到现有列表,可以使用该extend()
列表的方法(结合通过上述技术生成要添加的事物列表):
a = [1,2,3]
b = [4,5,6]
a.extend(b)
# a is now [1,2,3,4,5,6]
Run Code Online (Sandbox Code Playgroud)
Jak*_*ake 19
使用extend将列表理解添加到最后.
l.extend([x for i in range(100)])
Run Code Online (Sandbox Code Playgroud)
有关更多信息,请参阅Python文档.
我不得不走另一条路线来完成任务,但这就是我的结局。
my_array += ([x] * repeated_times)
Run Code Online (Sandbox Code Playgroud)
Itertools重复结合列表扩展。
from itertools import repeat
l = []
l.extend(repeat(x, 100))
Run Code Online (Sandbox Code Playgroud)