在 python 中使用 for 循环追加列出可变性
List mutability with append in for loop in python
我不熟悉 for 循环上下文中列表可变性的概念。
有人可以解释为什么下面代码的输出是一个空列表吗?
我希望 L3 = [3,4]
。
谢谢!
L1 = [1,2,3,4]
L2 = [1,2,5,6]
def no_dups(L1, L2):
L3 = []
for e in L1:
if e not in L2:
L3.append(e)
return(L3)
print(L3)
最后一行 print(L3)
甚至没有调用 no_dups
函数。它抛出一个期望,因为 L3 不是在函数之外定义的。
可能你的意思是:
L3 = no_dups(L1, L2)
print(L3)
在这种情况下,您确实会得到预期的结果。
这个有效:
>>> L1 = [1,2,3,4]
>>> L2 = [1,2,5,6]
>>>
>>> def no_dups(L1, L2):
... L3 = []
... for e in L1:
... if e not in L2:
... L3.append(e)
... return(L3)
...
>>> print(no_dups(L1,L2))
[3, 4]
>>>
L3
实际上并不存在于 no_dups()
之外,因此您无法打印它或其他任何东西
我不熟悉 for 循环上下文中列表可变性的概念。
有人可以解释为什么下面代码的输出是一个空列表吗?
我希望 L3 = [3,4]
。
谢谢!
L1 = [1,2,3,4]
L2 = [1,2,5,6]
def no_dups(L1, L2):
L3 = []
for e in L1:
if e not in L2:
L3.append(e)
return(L3)
print(L3)
最后一行 print(L3)
甚至没有调用 no_dups
函数。它抛出一个期望,因为 L3 不是在函数之外定义的。
可能你的意思是:
L3 = no_dups(L1, L2)
print(L3)
在这种情况下,您确实会得到预期的结果。
这个有效:
>>> L1 = [1,2,3,4]
>>> L2 = [1,2,5,6]
>>>
>>> def no_dups(L1, L2):
... L3 = []
... for e in L1:
... if e not in L2:
... L3.append(e)
... return(L3)
...
>>> print(no_dups(L1,L2))
[3, 4]
>>>
L3
实际上并不存在于 no_dups()
之外,因此您无法打印它或其他任何东西