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

2024-09-19 23:43:18 发布

您现在位置:Python中文网/ 问答频道 /正文

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]

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


Tags: 代码in元素forlenreturnif排序
1条回答
网友
1楼 · 发布于 2024-09-19 23:43:18

因为您正在交换(修改列表的内容),所以还需要在内部循环中使用索引

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

相关问题 更多 >