在 python 3.5 中从函数内修改函数范围外的变量

modify variables outside of function scope from within a function in python 3.5

如何获得以下结果?如果值大于 x(任何整数),我想改变 L(整数列表)以仅包含值。任何更改都只能在函数 applyAdd(L, x).

内完成
def applyAdd(L, x):
        L =[i for i in L if i>x]
        return max(L)

当在 IPython 控制台中输入以下内容时:

L = [0, -10, 5, 6, -4]
print(applyAdd(L, 3))
print(L)

我得到以下输出

6
[0, -10, 5, 6, -4]

相反我想要

6
[5, 6]

我知道 L 没有函数之外的范围。 我的问题是,是否可以从 applyAdd(L, x) 函数中修改 L

我把这个作为作业接到了,非常感谢任何帮助,谢谢。

这不起作用,因为生成器将在函数内新建一个新列表。

def applyAdd(L, x):
        L =[i for i in L if i>x]
        print(id(L)) #some different value

L = [0, -10, 5, 6, -4]
print(id(L)) #some value

解决方案1。使用全局变量代替

L = [0, -10, 5, 6, -4]

def applyAdd(x):
    global L
    L =[i for i in L if i>x]
    return max(L)

print(applyAdd(3))
print(L)

解决方案2。继续使用生成器

def applyAdd(L, x):
    X = ([i for i in L if i>x])
    L.clear()
    L.extend(X)
    return max(L)

L = [0, -10, 5, 6, -4]
print(applyAdd(L, 3))
print(L)