在 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() 之外,因此您无法打印它或其他任何东西