将相同的值多次附加到列表中

时间:2013-12-06 14:27:56

标签: python list append

为了使我的程序更漂亮而不是丑陋,我试图找到一种更多的pythonic方法,可以多次向列表中添加单个值。我现在使用循环,但是我创建了一个我不使用的变量。

l = []; n = 5; v = 0.5

for i in xrange(n):
    l.append(v)

有什么想法吗?

4 个答案:

答案 0 :(得分:20)

将v,n次添加到l:

l += n * [v]

答案 1 :(得分:9)

最常见的答案是使用list.extend()generator expression

l.extend(generate_value() for _ in range(n))

这将添加n次值。请注意,这将每次评估generate_value(),其他答案可能具有可变值的侧面问题:

>>> [[1]] * 5
[[1], [1], [1], [1], [1]]
>>> _[0].append(1)
>>> _
[[1, 1], [1, 1], [1, 1], [1, 1], [1, 1]]
>>> [[1] for _ in range(5)]
[[1], [1], [1], [1], [1]]
>>> _[0].append(1)
>>> _
[[1, 1], [1], [1], [1], [1]]

使用乘法方法时,最终会得到对同一列表的n个引用列表。当你改变它时,你会看到列表中每个元素的变化 - 因为它们都是相同的。

使用生成器表达式或列表推导时,会为每个子项创建一个新列表,因此每个项都是不同的值。修改一个只影响那一个。

显然,在你的例子中,值是不可变的,所以这没关系 - 但是值得记住的是不同的情况,或者值可能不是是不可变的。

答案 2 :(得分:6)

尝试使用list.extend和列表的乘法运算符

l.extend([v] * n)

答案 3 :(得分:1)

试试这个

n = 5
v = 0.5
l = [v]*n