我有一个预定义的列表,我想在函数结束时成为“新”列表。
例如
x = [4, 5, 6]
y = [1, 2, 3]
我想要的是该功能:
extend_list_x(x, y)
为此
x = [1, 2, 3, 4, 5, 6]
我尝试返回join_list,但是我不能更改x的值
x = [4, 5, 6]
y = [1, 2, 3]
def extend_list_x(x, y):
joined_list = [*y, *x]
global x
x = joined_list
return x
extend_list_x(x, y)
目前这是我的问题
SyntaxError: name 'x' is parameter and global
答案 0 :(得分:1)
global
函数。函数具有参数。使用它们(并可能返回值)这得益于左手的切片符号,x
就地改变了:
def extend_list_x(x, y):
x[:] = y+x
甚至更好,不要完全分配x
,而是使用部分切片分配重用先前的x
值。只需告诉python将右手内容放在之前索引0(由于目标长度为<len(y)
,因为它为0,所以先前的元素将被移动):
def extend_list_x(x, y):
x[:0] = y
像这样打电话:
extend_list_x(x,y)
此列表创建一个新列表并返回,而x
保持不变
def extend_list_x(x, y):
return y+x
像这样打电话:
x = extend_list_x(x,y)
答案 1 :(得分:0)
由于x是可变的,因此不需要使用global,这很糟糕;)。
def prepend(x,y):
z=y+x # construct the final result and store it in a local variable
x.clear() # global x is now []
x.extend(z) # "copy" z in x
会做。
答案 2 :(得分:0)
如果要创建新列表,可以简单地使用加法运算符:
def joiner(x,y):
return x+y
如果要保留相同的列表,则可以使用列表extend()方法:
def joiner(x,y):
return x.extend(y)