我有以下代码:
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/