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

The swapping of two elements in a list doesn't work

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))