【发布时间】:2020-03-02 15:29:02
【问题描述】:
我有一个包含整数和字符串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 以获得所需的输出?
谢谢!
【问题讨论】:
-
为什么不将
l设置为global?global l -
想想
l在第一个函数中是什么。它是参数,而不是全局参数,重新分配参数在函数之外没有任何影响。 -
在
manipulate()中,您正在改变传递给它的对象。append改变列表。因此,l已更改。不要更改第一个函数,只需执行l=filter_list(l)并将这些l = temp return l替换为return temp。 -
谢谢!我在我的函数中尝试了
l = filter_list(l)和标记lasglobal,它可以工作。
标签: python list global-scope