交换列表中的两个元素不起作用
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))
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))