我想更改列表中两个列表的位置。 像这样:
A = [[2,3,4], [5,-3,6]]
swap(A[0], A[1])
print(A)
#[[5,-3,6],[2,3,4]]
这不起作用(为什么?):
def swap(row1,row2):
temp = row2
row2 = row1
row1 = temp
这可行(为什么?):
def swap(row1,row2):
for i in range(0,len(row2)):
temp = row2[i]
row2[i] = row1[i]
row1[i] = temp
答案 0 :(得分:0)
Python按值传递引用。在您的第一个函数中,您传递对row1
和row2
的引用,切换这些引用,但这不会改变外部的列表。
如果要交换这样的列表中的元素,则应将列表传递进来,以便修改列表中的引用:
def swap(mylist):
mylist[0], mylist[1] = mylist[1], mylist[0]
# This works for a list of ints
this_list = [1, 2]
swap(this_list)
this_list
# [2, 1]
# Or for a list of lists (Note that the lengths aren't the same)
that_list = [[1, 2, 3], [4, 5]]
swap(that_list)
that_list
# [[4, 5], [1, 2, 3]]
(另外,值得注意的是,您可以使用python进行多个分配,因此您无需使用temp
变量。)