1

[SOLVED]

So the code goes like:

>>> a = [1,3,2]
>>> my_func(a)
>>> a == []
True

Where my_func alters the list without returning it. I know how to do this in C with pointers, but really confused over a python solution.

Thanks in advance!!

EDIT: So I am doing a radix sort which has a helper function and the helper function returns the sorted list. I want the main function to alter the original list instead of returning it:

def radix(a):
    base = ...
    temp = radix_helper(a, index, base)
    a[:] = []
    a.extend(temp)

So it would run as:

>>> 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 に答える