如何在Python中为整个(或部分)列表分配一个值?

elw*_*lwc 0 python list variable-assignment

我有List = [0, 1, 2, 3],我想给他们所有人分配一个数字,5 : List = [5, 5, 5, 5]. 我知道我可以List = [5] * 4轻松做到.但我也希望能够将最后3个元素分配给6.

List = [5, 5, 5, 5]

YourAnswer(List, 6, 1, 3)

>> [5, 6, 6, 6]
Run Code Online (Sandbox Code Playgroud)

哪里YourAnswer是一个功能.

任何类似的东西都会有所帮助.更喜欢避免循环.但如果没有已知的可能性,请告诉我.

Abh*_*jit 5

您实际上可以使用切片分配机制来分配列表的一部分.

>>> some_list = [0, 1, 2, 3]
>>> some_list[:1] = [5]*1
>>> some_list[1:] = [6]*3
>>> some_list
[5, 6, 6, 6]
Run Code Online (Sandbox Code Playgroud)

如果您要更新相同的列表,这是有益的,但是如果您想要创建新列表,您可以通过串联根据您的标准创建一个新列表

>>> [5]*1 + [6]*3
[5, 6, 6, 6]
Run Code Online (Sandbox Code Playgroud)

您可以将其包装到函数中

>>> def YourAnswer(lst, repl, index, size):
    lst[index:index + size] = [repl] * size


>>> some_list = [0, 1, 2, 3]
>>> YourAnswer(some_list, 6, 1, 3)
>>> some_list
[0, 6, 6, 6]
Run Code Online (Sandbox Code Playgroud)