[英]How do I manipulate a list with a function in Python (global scope)?
我有一个包含整数和字符串的列表l = [1, 2, 'a', 'b']
并且想要编写一个函数来获取列表并以之后只包含整数的方式对其进行操作。 函数输出看起来像我想要的,但它不会改变“原始”列表。
def filter_list(l):
temp =[]
for item in l:
if type(item) == int:
temp.append(item)
l = temp
return l
Function output: [1, 2]
Variable explorer: [1,2,'a','b']
相比之下,函数
def manipulate(l):
l.append("a")
return l
Function output: [1, 2, 'a', 'b', 'a']
Variable explorer: [1, 2, 'a', 'b', 'a']
更改“原始”列表。
谢谢!
在python中,所有对象都是通过引用传递给函数的,这意味着您可以更改传递给函数的对象。 这就是为什么当您在第二个示例中调用append
方法时,列表会发生变化。
但是,如果您将不同的对象分配给传递的参数 ( l = temp
),则您更改了引用本身,因此无法从外部范围对原始对象进行更改。 不过,在您的情况下,这不是问题,因为您返回了新引用,在这种情况下应该如此。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.