如何获得以下结果?如果value大于L
(任何整数),我想改变x
(整数列表)以仅包含值。任何更改都只能在函数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
在函数之外没有范围。
我的问题是,无论如何都要在L
函数中修改applyAdd(L, x)
。
我将此作为任务,非常感谢任何帮助,谢谢。
答案 0 :(得分:0)
这不起作用,因为生成器会在函数内部新建一个列表。
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)