在python中更改参数(列表)的值

2024-09-30 02:33:50 发布

您现在位置:Python中文网/ 问答频道 /正文

我想更改参数(列表)的值, 所以我写了如下代码,但它没有正常工作

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

如果你知道原因并解释一下,我会非常感激


Tags: 代码in列表for参数lenisdef
2条回答

i是循环中的一个局部变量,它包含s所包含的数字。重新分配变量不会影响它最初保存的数据

这类似于这不会改变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所指的内容,而不是最初用于初始化is元素

在第一段代码中,将i引用设为一个新的int

在第二段代码中,将s的一个特定槽引用int的一个新实例

相关问题 更多 >

    热门问题