为了使我的程序更漂亮而不是丑陋,我试图找到一种更多的pythonic方法,可以多次向列表中添加单个值。我现在使用循环,但是我创建了一个我不使用的变量。
l = []; n = 5; v = 0.5
for i in xrange(n):
l.append(v)
有什么想法吗?
答案 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