Python:将项目追加到列表N次

Toj*_*oji 70 python list

这似乎是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)

  • 或者将这两个建议组合成 `a.extend(b*n)` 的形式,其中 `n` 是你想要重复 b 中元素的次数 (3认同)

Jak*_*ake 19

使用extend将列表理解添加到最后.

l.extend([x for i in range(100)])
Run Code Online (Sandbox Code Playgroud)

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

  • 或者摆脱循环:`l.extend([x] * 100)` (2认同)

Raj*_*aju 7

l = []
x = 0
l.extend([x]*100)
Run Code Online (Sandbox Code Playgroud)


CTS*_*_AE 6

我不得不走另一条路线来完成任务,但这就是我的结局。

my_array += ([x] * repeated_times)
Run Code Online (Sandbox Code Playgroud)


kev*_*pie 5

Itertools重复结合列表扩展。

from itertools import repeat
l = []
l.extend(repeat(x, 100))
Run Code Online (Sandbox Code Playgroud)