为什么在使用同步分配交换元素时不调用引用?
Why not call a reference when swapping elements using simultaneous assignment?
我有一个关于 python 中交换元素的问题,我在网上找不到答案。我尝试的两种选择之间有什么区别,为什么只有第二种选择给出预期的输出?
我研究了一种选择排序算法,因此不得不交换列表的元素。我已将 max(my_list)
的值分配给变量 max_item
.
(1) 这是我第一次尝试交换 max_item
和 my_list[-1]
:
max_item, my_list[-1] = my_list[-1], max_item
实际输出为:
[value of max_item, value of max_item]
(2) 然后我尝试了以下操作:
my_list[my_list.index(max_item)], my_list[-1] = my_list[-1], my_list[my_list.index(max_item)]
这给出了预期的输出:
[value of my_list[-1], value of max_item]
非常感谢任何建议。提前致谢!
max_item
与my_list
无关,即使你这样做:
max_item = max(my_list)
my_list
中包含最大项的索引和 max_item
都是 别名 绑定到同一基础对象,但是当您重新分配 max_item
(而不是就地改变它,例如通过改变方法调用,或重新分配它的一个属性),你 重新绑定 这个名字,打破别名,在 my_list
.
您的第二行代码有效,因为您在 my_list
中重新绑定了适当的索引。不过,您只需要查找它以进行重新分配,因此您可以使用以下方法加快代码速度并稍微简化一下:
my_list[my_list.index(max_item)], my_list[-1] = my_list[-1], max_item
我有一个关于 python 中交换元素的问题,我在网上找不到答案。我尝试的两种选择之间有什么区别,为什么只有第二种选择给出预期的输出?
我研究了一种选择排序算法,因此不得不交换列表的元素。我已将 max(my_list)
的值分配给变量 max_item
.
(1) 这是我第一次尝试交换 max_item
和 my_list[-1]
:
max_item, my_list[-1] = my_list[-1], max_item
实际输出为:
[value of max_item, value of max_item]
(2) 然后我尝试了以下操作:
my_list[my_list.index(max_item)], my_list[-1] = my_list[-1], my_list[my_list.index(max_item)]
这给出了预期的输出:
[value of my_list[-1], value of max_item]
非常感谢任何建议。提前致谢!
max_item
与my_list
无关,即使你这样做:
max_item = max(my_list)
my_list
中包含最大项的索引和 max_item
都是 别名 绑定到同一基础对象,但是当您重新分配 max_item
(而不是就地改变它,例如通过改变方法调用,或重新分配它的一个属性),你 重新绑定 这个名字,打破别名,在 my_list
.
您的第二行代码有效,因为您在 my_list
中重新绑定了适当的索引。不过,您只需要查找它以进行重新分配,因此您可以使用以下方法加快代码速度并稍微简化一下:
my_list[my_list.index(max_item)], my_list[-1] = my_list[-1], max_item