Python - 切换位置:list[i], list[list.index(minimum)] = list[list.index(minimum)], list[i]
Python - switching positions: list[i], list[list.index(minimum)] = list[list.index(minimum)], list[i]
谁能解释一下,为什么不能在我的函数中交换列表位置以进行选择排序?
这是我一开始写的,但是函数 returns 与输入相同的列表:
def selection_sort(list):
for i in range(0, len(list)):
minimum = list[i]
for j in range(i + 1, len(list)):
if list[j] < minimum:
minimum = list[j]
list[i], list[list.index(minimum)] = list[list.index(minimum)], list[i]
return list
然后我尝试使用变量索引 = list.index(最小值),突然它起作用了。
def selection_sort(list):
for i in range(0, len(list)):
minimum = list[i]
for j in range(i + 1, len(list)):
if list[j] < minimum:
minimum = list[j]
index = list.index(minimum)
list[i], list[index] = list[index], list[i]
return list
谁能给我解释一下区别,为什么第一个解决方案不正确?
谢谢!
首先计算赋值的右边(list[list.index(minimum)], list[i]
),然后赋值给左边的元组list[i], list[list.index(minimum)]
。
我在猜测下一部分,但我假设 list[i]
被分配给 list[list.index(minimum)]
。但是,由于您已经分配给 list[i]
,因此您在第二次找到 list.index(minimum)
之前已经修改了列表。由于您不是在相同的列表中搜索,因此索引可能不同。
您的第二次尝试计算一次索引并在两个地方使用相同的值。
作为旁注,最好不要将变量命名为与 python 内置名称相同的名称。您的函数采用一个名为 list
的参数,以便“隐藏”内置 list
函数。您将无法在函数内部调用该内置函数,因为该名称已被盗用。最好称它为 my_list
、array
或 list_to_sort
等
谁能解释一下,为什么不能在我的函数中交换列表位置以进行选择排序? 这是我一开始写的,但是函数 returns 与输入相同的列表:
def selection_sort(list):
for i in range(0, len(list)):
minimum = list[i]
for j in range(i + 1, len(list)):
if list[j] < minimum:
minimum = list[j]
list[i], list[list.index(minimum)] = list[list.index(minimum)], list[i]
return list
然后我尝试使用变量索引 = list.index(最小值),突然它起作用了。
def selection_sort(list):
for i in range(0, len(list)):
minimum = list[i]
for j in range(i + 1, len(list)):
if list[j] < minimum:
minimum = list[j]
index = list.index(minimum)
list[i], list[index] = list[index], list[i]
return list
谁能给我解释一下区别,为什么第一个解决方案不正确? 谢谢!
首先计算赋值的右边(list[list.index(minimum)], list[i]
),然后赋值给左边的元组list[i], list[list.index(minimum)]
。
我在猜测下一部分,但我假设 list[i]
被分配给 list[list.index(minimum)]
。但是,由于您已经分配给 list[i]
,因此您在第二次找到 list.index(minimum)
之前已经修改了列表。由于您不是在相同的列表中搜索,因此索引可能不同。
您的第二次尝试计算一次索引并在两个地方使用相同的值。
作为旁注,最好不要将变量命名为与 python 内置名称相同的名称。您的函数采用一个名为 list
的参数,以便“隐藏”内置 list
函数。您将无法在函数内部调用该内置函数,因为该名称已被盗用。最好称它为 my_list
、array
或 list_to_sort
等