Python如何将列表作为参数并编辑其值?

标签 python list parameters

我有以下代码:

def radixSort(A):

    #get max amount of digits

    A = sortByDigit(A, maxDigits) #this works
    print(A) #prints A as sorted

if __name__ == "__main__":
    A = [int(100*random.random()) for i in range(10)]
    radixSort(A)
    print(A) #prints unsorted

为什么在 radixSort 中更改 A 不会在 main 方法中更改 A?我意识到我可以简单地在 radixSort 中添加一个 return 语句,并在 main 方法中添加一个赋值语句,但是代码必须通过以下测试用例:

    def testrRadixSort(self):
        A = [4, 3, 2]
        radixSort(A)
        self.assertEqual(A, [4,3,2])

最佳答案

sortByDigit 不是就地排序。它正在创建一个新列表并返回对该列表的引用。

您可以通过这个简单的更改将 A 的内容替换为新列表的内容

A[:] = sortByDigit(A, maxDigits) #this works

或者,您可以修改 sortByDigit,使其就地排序

关于Python如何将列表作为参数并编辑其值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19625946/

相关文章:

python - 解析 csv 文件中的日期和时间

带有 if 语句的 Python 温度转换器问题

c++ - 使用构造函数的变量

python - Django 重启服务器或 httpd

java - 从 Python 调用 .jar 文件

c++ - 是否返回 std::list coSTLy?

python - 扩展解包不会在列表中创建单独的项目

python - Python中每个元素的长度总和

javascript - 你能用 this.queryText.replace 替换两个不同的文本吗?

c# - 如何获取所有字符串格式参数