这是我的代码:
x=[1,3,2]
def foo(x):
x.sort()
x = x + [4,5]
x.extend([6,7])
return x
foo(x)
print(x)
我希望打印列表为[1,2,3,4,5,6,7],但我得到了[1,2,3]。我读到这是因为就地操作,因为它返回None,但我已经将返回x包含在我的代码中,但它仍然不起作用。
答案 0 :(得分:0)
x=[1,3,2]
def foo(x):
x.sort()
x = x + [4,5]
x.extend([6,7])
return x
print(foo(x))
答案 1 :(得分:0)
这里有两个问题:x
的范围和返回值。
当您声明x = x + [4, 5]
时,x
不再是同一个列表
>>> x = [1, 2, 3]
>>> id(x)
4501926472
>>> x = x + [4, 5]
>>> id(x)
4501926616
>>>
因此,x
内的foo
指的是本地 x
,而不是全球 x
功能。
此外,您不会存储来自x
的返回foo
,因此它会在所有实际情况下消失。