2024-09-30 02:33:50 发布
网友
我想更改参数(列表)的值, 所以我写了如下代码,但它没有正常工作
def add1(s): # s is a list for i in s: i += 1
因此,我改变了代码,如下所示,它的工作。 然而,我想知道为什么第一个代码不能正常工作
def add1(s): for i in range(len(s)): s[i] += 1
如果你知道原因并解释一下,我会非常感激
i是循环中的一个局部变量,它包含s所包含的数字。重新分配变量不会影响它最初保存的数据
i
s
这类似于这不会改变a:
a
a = 1 b = a # This is somewhat what's happening with `for i` b += 1 # And this is comparable to i += 1 print(a, b) # Will print 1 2, not 2 2
int值是不可变的。无法更改现有int的值;您只能用不同的int替换它。但这意味着您只更改名称i所指的内容,而不是最初用于初始化i的s元素
int
在第一段代码中,将i引用设为一个新的int
在第二段代码中,将s的一个特定槽引用int的一个新实例
i
是循环中的一个局部变量,它包含s
所包含的数字。重新分配变量不会影响它最初保存的数据这类似于这不会改变
a
:int
值是不可变的。无法更改现有int
的值;您只能用不同的int
替换它。但这意味着您只更改名称i
所指的内容,而不是最初用于初始化i
的s
元素在第一段代码中,将
i
引用设为一个新的int
在第二段代码中,将
s
的一个特定槽引用int
的一个新实例相关问题 更多 >
编程相关推荐