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

问题描述 投票:0回答:4

我有

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

List = [5, 5, 5, 5]

YourAnswer(List, 6, 1, 3)

>> [5, 6, 6, 6]

其中

YourAnswer
是一个函数。

任何类似的东西都会有帮助。最好避免 for 循环。但如果没有已知的可能性,请告诉我。

python list variable-assignment
4个回答
7
投票

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

>>> some_list = [0, 1, 2, 3]
>>> some_list[:1] = [5]*1
>>> some_list[1:] = [6]*3
>>> some_list
[5, 6, 6, 6]

如果您要更新相同的列表,这很有用,但如果您想创建新列表,您可以根据您的条件通过串联简单地创建一个新列表

>>> [5]*1 + [6]*3
[5, 6, 6, 6]

您可以将其包装到一个函数中

>>> 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]

2
投票
In [138]: def func(lis,x,y,z):
   .....:     return lis[:y]+[x]*z
   .....: 

In [139]: lis=[5,5,5,5]

In [140]: func(lis,6,1,3)
Out[140]: [5, 6, 6, 6]

0
投票

可以使用+来实现

def createList(val1, n1, val2, n2):
    return [val1] * n1 + [val2]*n2

0
投票

您可以通过索引重新分配值 例如

List = [5, 5, 5, 5]
List[1:4] = [6, 6, 6]
print(List)

输出:[5,6,6,6]

© www.soinside.com 2019 - 2024. All rights reserved.