交换列表中的两个元素不起作用


def sortingStoL(lst):
for i in range(len(lst)):
for item in lst[i + 1:]:
if item < lst[i]:
print(item, lst[i])
lst[i], item = item, lst[i]
print(lst)
return lst
a_list = [5, 4, 3, 2]
print(sortingStoL(a_list))

我很难弄清楚如何修复这个代码。我试图对a_list中的元素从小到大排序,但我得到的是这样的,

4 5
[4, 4, 3, 2]
3 4
[3, 4, 3, 2]
2 3
[2, 4, 3, 2]
3 4
[2, 3, 3, 2]
2 3
[2, 2, 3, 2]
2 3
[2, 2, 2, 2]
[2, 2, 2, 2]

看起来像

这行
lst[i], item = item, lst[i]

有一个问题,因为它不能正确地交换两个元素,而只是用小元素覆盖大元素。

因为你正在交换(修改列表的内容),你需要在内循环中使用索引。

def sortingStoL(lst):
for i in range(len(lst)):
for j in range(i + 1,len(lst)):
if lst[j] < lst[i]:
print(lst[j], lst[i])
lst[i], lst[j] = lst[j], lst[i]
print(lst)
return lst
a_list = [5, 4, 3, 2]
print(sortingStoL(a_list))

最新更新