是否可以编写一行代码对列表 A 进行排序,而不是它的浅拷贝列表 B

is it possible to write a single line of code that will sort list A, but not it's shallow copy list B

根据这些命令,是否可以编写一行代码对 mylistA 进行排序,而不对 mylistB 进行排序

mylistA = [5,23,7,-1]
mylistB = mylistA

您需要一个新列表 -- 但是内置 sorted 总是创建一个新列表,所以 ...

mylistA = [5,23,7,-1]
mylistB = mylistA
mylistA = sorted(mylistA)

我想我可能还应该指出,我们可以在 2(!) 行中很好地做到这一点:

mylistB = [5,23,7,-1]
mylistA = sorted(mylistB)

是啊!

B 不是浅拷贝,它是指向同一个列表的第二个变量 - 所以如果你对它进行排序 "in-place" 你将修改两个变量指向的值。要制作真正的浅拷贝,请使用切片或列表构造函数:

a = [5,23,7,-1]
b = a[:]    # or list(a)

在python中你可以认为所有变量都是"pointers"。