Python:对列表进行排序

标签 python list sorting

我试图通过移动列表并检查列表的给定元素是否大于列表的下一个元素来对列表进行排序,如果是,则相应地移动它,以便较小的数字位于左侧,右侧较大。

这是我到目前为止的代码:

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/

相关文章:

algorithm - 使用 n/2 额外内存空间的归并排序算法

Javascript 递归地排序对象和嵌套对象以及数组

python - 如何在 snakemake 管道中使用 pandas

python - 如何修复 "tuple object has no attribute"?

android - Kivy:如何更改窗口大小属性以及点击和触摸之间的区别

arrays - 从 netLogo 中的字符串列表/数组中选择一个随机元素

Python 序列命名约定

list - Haskell ~ last 是否遍历整个列表?

java - 如何更新List<?中的数据扩展 Map<String,?>>

javascript - 在javascript中对多维数组进行排序