是否可以编写一行代码对列表 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"。
根据这些命令,是否可以编写一行代码对 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"。