我是python的新手,所以只是一个关于python函数如何工作的简单问题,因为我已经习惯了C / C ++所以这是我的问题,我有一个列表:
a = ['0','1','2','3','4','5','6','7','8','9']
我有一个函数,它接受list的两个元素并交换它们:
def swap(d,e):
temp = e
e = d
d = temp
现在当我传递像假设
这样的论点时swap(a[0],a[5])
它没有做任何事情,我的意思是列表保持不变。我也在py文件的最开始定义了我的函数,所以当我插入打印临时像
def swap(d,e):
temp = e
print temp
e = d
d = temp
它给了我正确的价值说出[5]是什么 我的意思是如果我在C
中做了这样的事情答案 0 :(得分:3)
当您将temp
分配给e
时,您只是创建了对象e
的新引用,但您所做的与列表无关。
def swap(l, o, n): #pass the list, old position, new position
l[n], l[o] = l[o], l[n]
这样,您确实可以更改列表。
答案 1 :(得分:1)
当您将列表中的对象传递给swap
时,它们会在本地绑定到参数名称d
和e
。然后,您将d
与e
交换,但这不会更改列表。您可以return
值:
def swap(d, e):
return e, d
然后称之为:
a[0], a[5] = swap(a[0], a[5])
但显然你可以这样做:
a[0], a[5] = a[5], a[0]
或者,根据alKid的回答传递列表和索引。