bgc*_*ode 4 python pointers list
有没有办法将指针传递给列表,所以我可以
update_list(list, data)
而不是必须做
list = update_list(list, data)
无论这是否可行,在这种情况下什么是可取的和Pythonic?
Joh*_*web 10
我建议从C++的角度阅读Python变量名的语义:
所有变量都是引用
这是对整篇文章的过度简化,但是这(以及a list
是一种可变类型的理解)应该可以帮助您理解以下示例的工作原理.
In [5]: def update_list(lst, data):
...: for datum in data:
...: lst.append(datum)
...:
In [6]: l = [1, 2, 3]
In [7]: update_list(l, [4, 5, 6])
In [8]: l
Out[8]: [1, 2, 3, 4, 5, 6]
Run Code Online (Sandbox Code Playgroud)
您甚至可以使用extend()方法缩短它:
In [9]: def update_list(lst, data):
...: lst.extend(data)
...:
Run Code Online (Sandbox Code Playgroud)
这实际上可能会消除您的功能需求.
注意: list
对于变量名称,它是内置的,因此是一个糟糕的选择.