在 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)
如何获得以下结果?如果值大于 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)