繁体   English   中英

Python-对数字列表进行排序

[英]Python - Sorting lists of numbers

刚学习Python并进入排序列表的主题。 显示了两种算法:插入和选择。 因此,我有了一个主意并创建了这个主意:

def DiffSort(lst):
    lstDiff = [None] * len(lst)
    i = 0

    while i < len(lst):
        lstDiff[i] = lst[i] - lst[i-1] if i != 0 else lst[0]

        if lstDiff[i] < 0:
            sbj, tmp = lst[i], lstDiff[i]

            while tmp < 0:
                i -= 1
                tmp += lstDiff[i]
                lst[i+1] = lst[i]

            lst[i] = sbj
        else:
            i += 1

lst = [13,25,18,122,32,1,0.78,25,85,1,32,56,0.55,0.6,17]
print(lst)

DiffSort(lst)

print(lst)

有什么好处吗 已经有类似的方法了吗?

list.sort()如果要就地对列表进行排序。

如果要返回列表的排序副本,请使用sorted(list)

第二个选项可与任何可迭代类型一起使用,而第一个选项则是列表专有的(尽管某些其他类型可能也定义了相同或相似的功能,但通常不能期望这样做)。

由于您似乎关心它的算法部分,因此您可能会感兴趣: http : //svn.python.org/projects/python/trunk/Objects/listsort.txt

lst.sort()不够好吗? 它肯定比必须在O(n ^ 2)时间内运行的Python解决方案要快得多。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM