前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python中排序函数sort()和sorted()的区别(这是一个大坑)

Python中排序函数sort()和sorted()的区别(这是一个大坑)

作者头像
大黄大黄大黄
发布2018-09-14 17:33:19
2.3K0
发布2018-09-14 17:33:19
举报

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/sinat_35512245/article/details/79584196

今天在LeetCode上刷题的时候要用到排序函数,刚开始并没有意识到这两个排序函数的区别,导致产生了代码错误,特贴此帖。

首先这两个函数都能够实现排序的功能,但是原理却有很多的不同。先看如下代码:

代码语言:javascript
复制
listA = [1, 3, 6, 3, 2]
newList_1 = listA.sort()
print(listA)
print(newList_1)

输出的结果是:

代码语言:javascript
复制
[1, 2, 3, 3, 6]
None

有木有感到很奇怪,为什么listA的值变成了排序后的结果,但是newList_1却是None呢?查看源码:

代码语言:javascript
复制
def sort(self, key=None, reverse=False): # real signature unknown; restored from __doc__
        """ L.sort(key=None, reverse=False) -> None -- stable sort *IN PLACE* """
        pass

原来sort()方法是在原来的列表上直接进行排序,并没有返回一个新的列表,所以返回值为None!

再看看:

代码语言:javascript
复制
listA = [1, 3, 6, 3, 2]
newList_2 = sorted(listA)
print(newList_2)
print(listA)

输出的结果是:

代码语言:javascript
复制
[1, 2, 3, 3, 6]
[1, 3, 6, 3, 2]

有木有很神奇?listA并没有发生变化,但是返回的结果就成了排序后的列表。再来看看源码:

代码语言:javascript
复制
def sorted(*args, **kwargs): # real signature unknown
    """
    Return a new list containing all items from the iterable in ascending order.

    A custom key function can be supplied to customize the sort order, and the
    reverse flag can be set to request the result in descending order.
    """
    pass

由以上可知,sorted()函数排好序后会返回一个新的列表,原来的列表并没有发生改变!

嗨呀,真的是厉害了,我的哥!

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018年03月16日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档