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

时间:2011-01-11 05:11:23

标签: python list

这似乎是Python的捷径。我想将一个项目附加到列表N次,实际上是这样做的:

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

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

l.append_multiple(x, 100)

有吗?

7 个答案:

答案 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)

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

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

有关详细信息,请参阅Python docs

答案 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]