将相同的值多次附加到lis

2024-03-28 08:59:49 发布

您现在位置:Python中文网/ 问答频道 /正文

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

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

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

有什么想法吗?


Tags: 方法in程序列表forappendxrange
3条回答

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

l.extend([v] * n)

最一般的答案是使用^{}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个引用的列表。当你改变它时,你会看到列表中每个元素的变化——因为它们都是一样的。

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

显然,在您的示例中,值是不可变的,所以这无关紧要——但对于不同的情况,或者如果值可能不是不可变的,则值得记住。

要将v,n次添加到l:

l += n * [v]

相关问题 更多 >