繁体   English   中英

如何使用 Python(全局范围)中的函数操作列表?

[英]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']

更改“原始”列表。

  1. 这两个函数之间有什么区别,即为什么
    第二个操纵我的“原始”列表,但第一个没有?
  2. 我必须如何调整功能 1 才能获得所需的输出?

谢谢!

在python中,所有对象都是通过引用传递给函数的,这意味着您可以更改传递给函数的对象。 这就是为什么当您在第二个示例中调用append方法时,列表会发生变化。

但是,如果您将不同的对象分配给传递的参数 ( l = temp ),则您更改了引用本身,因此无法从外部范围对原始对象进行更改。 不过,在您的情况下,这不是问题,因为您返回了新引用,在这种情况下应该如此。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM