首页 > 解决方案 > 在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

如果您知道原因并解释一下,我将不胜感激。

标签: pythonarguments

解决方案


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

推荐阅读