我试图通过移动列表并检查列表的给定元素是否大于列表的下一个元素来对列表进行排序,如果是,则相应地移动它,以便较小的数字位于左侧,右侧较大。
这是我到目前为止的代码:
L = [3, 4, 1, 5, 2, 0]
for i in range(0, (len(L)-1)):
if L[i] > L[i+1]:
L[i], L[i+1] = L[i+1], L[i]
print(L)
三次迭代的输出如下:
[3, 1, 4, 5, 2, 0]
[3, 1, 4, 2, 5, 0]
[3, 1, 4, 2, 0, 5]
我的目标是让它读取 [0, 1, 2, 3, 4, 5]。我意识到我可以只使用排序()函数,但我不想这样做。我想我可以尝试多次迭代列表中的 for 循环,但我不确定如何执行此操作。
最佳答案
目前您仅比较每个元素及其后继元素。但是,您确实想将其与以下所有元素进行比较(以 i+1
开始,以 len(L)
结束),因此您需要一个双循环:
L = [3, 4, 1, 5, 2, 0]
for i in range(0, (len(L)-1)):
for j in range(i+1, len(L)):
if L[i] > L[j]:
L[i], L[j] = L[j], L[i]
print(L)
打印以下步骤:
[1, 4, 3, 5, 2, 0]
[0, 4, 3, 5, 2, 1]
[0, 3, 4, 5, 2, 1]
[0, 2, 4, 5, 3, 1]
[0, 1, 4, 5, 3, 2]
[0, 1, 3, 5, 4, 2]
[0, 1, 2, 5, 4, 3]
[0, 1, 2, 4, 5, 3]
[0, 1, 2, 3, 5, 4]
[0, 1, 2, 3, 4, 5]
关于Python:对列表进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46456376/