在一行中的列表中添加相同值的Pythonic方法?

时间:2019-07-16 16:52:03

标签: python list

我想在一行循环中在列表范围内添加数字零。

基本上我想做的只是一行:

for position in range(43,53):
    rows[0][position] = 0

我尝试过的是这个,但是我认为这是不正确的:

rows[0][0 for position in range(43, 54)]

3 个答案:

答案 0 :(得分:3)

您可以通过切片来实现:

rows[0][43:53] = [0 for i in range(10)]

答案 1 :(得分:0)

您可以使用切片分配。 repeat创建一个长度为0的必要长度的序列。

rows[0][43:53] = itertools.repeat(0, 10)

(我主要使用repeat,因为我错误地认为list.__setitem__只会尝试消耗尽可能多的元素以填充所需的范围。这似乎是错误的,尽管通常来说,可以实现__setitem__那样懒惰,在这种情况下,您只需编写whatever[43:54] = itertools.repeat(0),而不必预先计算所需的0数。)

答案 2 :(得分:0)

这应该工作正常。再看看其他发布的解决方案

rows[0][43:53] = [0] * 10