[解决]
所以代码如下:
>>> a = [1,3,2]
>>> my_func(a)
>>> a == []
True
my_func在不返回列表的情况下更改列表。我知道如何使用指针在C中执行此操作,但实际上对python解决方案感到困惑。
提前致谢!!
编辑:所以我正在做一个基数排序,它有一个辅助函数,辅助函数返回排序列表。我希望main函数改变原始列表而不是返回它:
def radix(a):
base = ...
temp = radix_helper(a, index, base)
a[:] = []
a.extend(temp)
所以它会以:
运行>>> a = [1,3,4,2]
>>> radix(a)
>>> a
[1,2,3,4]
答案 0 :(得分:2)
列表是可变的,因此您需要做的就是改变函数中的列表。
def my_func(l):
del l[:]
答案 1 :(得分:1)
Python按值传递参数,但a
的值是对列表对象的引用。您可以在函数中修改该列表对象:
def my_func(a):
a.append('foobar')
如果您忘记直接使用相关对象,这可能是造成意外副作用的原因。
答案 2 :(得分:0)
如果标识符已修复,则可以使用global
关键字:
a = [1,2,3]
def my_func():
global a
a = []
否则你可以直接修改参数:
a = [1,2,3]
def my_func(a):
a.clear()