用相同值更新列表子集的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]