1

[解决了]

所以代码如下:

>>> 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] 
4

3 回答 3

2

列表是可变的,所以你需要做的就是在函数中改变列表。

def my_func(l):
  del l[:]
于 2013-11-01T22:34:46.653 回答
1

Python按值传递参数,但值a是对列表对象的引用。您可以在函数中修改该列表对象:

def my_func(a):
    a.append('foobar')

如果您忘记了您正在直接使用相关对象,这可能是意外副作用的原因。

于 2013-11-01T22:35:32.870 回答
0

如果标识符是固定的,那么您可以使用global关键字:

a = [1,2,3]

def my_func():
    global a
    a = []

否则,您可以直接修改参数:

a = [1,2,3]

def my_func(a):
    a.clear()
于 2013-11-01T22:42:29.403 回答