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

Posted

技术标签:

【中文标题】如何为 Python 中的整个(或部分)列表分配一个值?【英文标题】:How to assign one value to the entire (or partial) list in Python? 【发布时间】:2012-12-18 12:41:12 【问题描述】:

我有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 循环。但是如果没有已知的可能性,请告诉我。

【问题讨论】:

函数调用中1的作用是什么? 1 表示第二个元素,3 表示最后一个元素 那么切片分配就是你想要的,比如List[1:4] = [6] * 3,如下面的一些答案所示。 我认为您需要澄清是要使用给定值创建新列表,还是要修改现有列表的内容。 是的。非常感谢社区。以前从未真正使用过切片分配。 【参考方案1】:

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

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

【讨论】:

值得注意的是,[x]*n 复制了相同的 x n 次。因此,修改任何列表元素都会产生修改所有元素的效果 @inspectorG4dget: True 但仅供参考类型。【参考方案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]

【讨论】:

【参考方案3】:

你可以使用 + 来实现它

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

【讨论】:

以上是关于如何为 Python 中的整个(或部分)列表分配一个值?的主要内容,如果未能解决你的问题,请参考以下文章

如何为多处理池中的单个进程分配 python 请求会话?

我应该如何为精灵表中的精灵分配名称?

python:如何为字母赋值?

如何为 Yii 中的每个按钮分配动作?

如何为同一视图中的每个 UIImageView 分配从相机拍摄的照片?

如何为每个单元分配号码?