用相同值更新列表子集的Pythonic方法

用相同值更新列表子集的Pythonic方法,python,python-3.x,list,Python,Python 3.x,List,我正在这样做: for f in range(n, n + k + 1): mylist[f] = 0 想知道我是否可以做一些类似的事情: mylist[f:f+k] = 0 是的,您可以执行类似的操作,但可以使用右侧的列表对象。例如: my_list = [1, 1, 1, 1, 1, 1, 1, 1, 1, 1] f, k = 2, 3 my_list[f:f+k] = [0]*k # ^ List of size "k&

我正在这样做:

for f in range(n, n + k + 1):
     
     mylist[f] = 0
想知道我是否可以做一些类似的事情:

mylist[f:f+k] = 0

是的,您可以执行类似的操作,但可以使用右侧的列表对象。例如:

my_list = [1, 1, 1, 1, 1, 1, 1, 1, 1, 1]
f, k = 2, 3

my_list[f:f+k] = [0]*k
#                 ^ List of size "k" i.e. 3

# Updated value of "my_list":
# [1, 1, 0, 0, 0, 1, 1, 1, 1, 1]
在上述示例中,
myu列表中
f
th索引中的
k
元素数将替换为右侧列表中的相应值

有关其工作原理的更多详细信息,请参阅。

是的,这称为。您只需要在右侧有一个包含k个项目的对象

您可以使用迭代器,而不是像中那样创建临时列表。我相信这将更有效地为大k。这里有两个选项:


这回答了你的问题吗?
mylist = [100, 101, 102, 103, 104, 105]
f = 2
k = 3

mylist[f:f+k] = ('a' for _ in range(k))
print(mylist)  # -> [100, 101, 'a', 'a', 'a', 105]
from itertools import repeat

mylist[f:f+k] = repeat('b', k)
print(mylist)  # -> [100, 101, 'b', 'b', 'b', 105]