我希望能够根据列表中元素在列表中的位置来移动,其中该位置在我可以更改的函数中定义为变量。为什么下面的方法不起作用?
a = list("abcd")
b = list("efgh")
def move(start,end):
end = start
start = "."
move(a[1],b[3])
答案 0 :(得分:2)
a[1]
和b[3]
的值作为参数传递给move
,而不是表达式本身。 move(a[1], b[3])
与a
等价(根据b
和move("b", "h")
的定义)。
在函数内部,您要做的就是更改本地名称end
和start
的值,而不以任何方式修改a
和b
的值
要执行您想要的操作,move
除了需要将索引用作参数之外,还需要同时接收两个列表。例如,
def move(l1, l2, start, end):
l2[end] = l1[start]
l1[start] = "."
move(a, b, 1, 3)