Python中排序函数sort()和sorted()的区别(这是一个大坑)_python sort ascending是什么意思-程序员宅基地

技术标签: 算法  python  Python学习之路  leetcode  排序算法  编程题  

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

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

listA = [1, 3, 6, 3, 2]
newList_1 = listA.sort()
print(listA)
print(newList_1)

输出的结果是:

[1, 2, 3, 3, 6]
None

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

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!

再看看:

listA = [1, 3, 6, 3, 2]
newList_2 = sorted(listA)
print(newList_2)
print(listA)

输出的结果是:

[1, 2, 3, 3, 6]
[1, 3, 6, 3, 2]

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

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()函数排好序后会返回一个新的列表,原来的列表并没有发生改变!

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

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/sinat_35512245/article/details/79584196

智能推荐

oracle冷备份和热备份-程序员宅基地

文章浏览阅读5.1k次。对于oracle数据库只有物理备份 和逻辑备份 物理备份:是将实际组成数据库的操作系统文件从一处拷贝到另一处的备份过程,通常是从磁盘到磁带。 逻辑备份:是利用SQL语言从数据库中抽取数据并存于二进制文件的过程。 第一类为物理备份,该方法实现数据库的完整恢复,但数据库必须运行在归挡模式下(业务数据库在非归挡模式下运行),且需要极大的外部存储设备,例如磁带 库,具体包

镜像安装python3.7+pytorch1.7+torchvision0.8.1-程序员宅基地

文章浏览阅读4.9k次,点赞2次,收藏6次。一、创建虚拟环境并安装3.7的python1.打开Windows环境下的anaconda:conda create -n name python=3.7 你创建的虚拟环境文件可以在,Anaconda->envs文件下找到2.进入新建的虚拟环境:activate name二、添加清华镜像>conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/>conda c.

python刷新网页脚本_用python脚本24小时刷浏览器的访问量方法-程序员宅基地

文章浏览阅读1.1k次。如下所示: # -*- coding=utf-8 -*-import urllib2import socketimport timeurls = raw_input("Please enter a web address: \n> ")print "\nAccess web page start..."brushNum = 3600for i in range(brushNum):url =..._urlopen 刷新网页

利用计算机解决问题的原理方法是什么,2021安徽省中小学教师招聘中学信息技术笔试大纲...-程序员宅基地

文章浏览阅读253次。2021年安徽省中小学教师招聘考试大纲已公布,安徽中小学教师招聘统一笔试时间是3月28日,现中公教师网整理了2021安徽省中小学教师招聘中学信息技术笔试大纲内容如下所示:一、考试目标与要求(一)考试目标考查考生中学信息技术课程与教学论的基本理论和基本方法,能运用这些基本理论和基本方法解决有关中学信息技术学科教学中的实际问题,具备从事中学信息技术学科教育教学工作所必需的基本教学技能。(二)考试要求1..._如何用逻辑的工具创造性解决语言交流中的问题

LeetCode_Sorting_1753. Maximum Score From Removing Stones 移除石子的最大得分【脑筋急转弯】【C++】【中等】_你正在玩一个单人游戏,面前放置着大小分别为 a、b 和 c 的 三堆 石子。 每回合你-程序员宅基地

文章浏览阅读2.3k次。目录一,题目描述英文描述中文描述示例与说明二,解题思路三,AC代码C++四,解题过程第一博一,题目描述英文描述You are playing a solitaire game with three piles of stones of sizes a​​​​​​, b,​​​​​​ and c​​​​​​ respectively. Each turn you choose two different non-empty piles, take one st_你正在玩一个单人游戏,面前放置着大小分别为 a、b 和 c 的 三堆 石子。 每回合你

vue解决子组件不更新问题,vue解决父组件调用子组件传传只进行一次的问题_vue父组件调子组件方法里面值只修改一次-程序员宅基地

文章浏览阅读1.5k次。vue解决子组件不更新问题,vue解决父组件调用子组件传传只进行一次的问题_vue父组件调子组件方法里面值只修改一次

随便推点

【CDH】选定的 Parcel 正在下载并安装在群集的所有主机上 主机运行状况不良_选定的 parcel 正在下载并安装在群集的所有主机上。-程序员宅基地

文章浏览阅读6.4k次,点赞2次,收藏3次。安装cdh 5.15.2的时候,因为下在的包MD5值,不对了,重新安装Parcel这一步。但是却报异常。现象通过Cloudera WEB界面安装Hadoop过程中,在安装Parcel步骤时,一个节点分配激活失败,报错信息显示”主机运行状况不良”,如下图所示。分析CM的集群是Server-Agent模式的,那么必须有一个唯一的id来标识Server和Agent属于同一个集群,在Agent端..._选定的 parcel 正在下载并安装在群集的所有主机上。

python奇数数列求和_斐波那契数列(Fibonacci sequence)-程序员宅基地

文章浏览阅读3.1k次。斐波那契数列(Fibonacci sequence),又称黄金分割数列、因数学家列昂纳多·斐波那契(Leonardoda Fibonacci)以兔子繁殖为例子而引入,故又称为“兔子数列”。斐波那契数列指的是这样一个数列:1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987在数学上,斐波那契数列以如下被以递推的方法定义:F(1)=1,F(2)=1,..._奇数数列求和python代码

Java之------常用的设计模式_impl和business属于什么设计模式-程序员宅基地

文章浏览阅读4k次。一、单例模式a、单例模式:单例是最简单的很常用的一种设计模式,保证了一个类在内存中只能有一个对象。思路: 1) 如果其他程序能够随意用new创建该类对象,那么就无法控制个数。因此,不让其他程序用new创建该类的对象。 2) 既然不让其他程序new该类对象,那么该类在自己内部就要创建一个对象,否则该类就永远无法创建对象了。 3) 该类将创建的对象对外(整个系统)提供_impl和business属于什么设计模式

ORACLE的隔离级别--isolation level-程序员宅基地

文章浏览阅读202次。声明:该文章系转载-转载地址有两个:1:http://epub.itpub.net/3/4.htm2:http://blog.csdn.net/wh62592855/article/details/4759755           如果发生侵权行为,本人将立即停止侵权行为:隔离级别(isolation level) 隔离级别定义了事务与事务之间的隔离程度。 ..._isolation_level

js事件绑定,通过addEventListener传递参数-程序员宅基地

文章浏览阅读3.2k次。如果要为事件处理函数送参数的话,需要在匿名函数(事件函数)外包裹一个匿名函数, 并立即执行。

SQLSERVER全量/增量备份+还原_sqlserver增量备份-程序员宅基地

文章浏览阅读4.2k次。因更换护服务器需要,需要从源端SQLSERVER的数据全部迁移到目标端SQLSERVER服务器上。这里使用完整、事务日志进行备份和还原,及使用SSMS工具进行迁移。_sqlserver增量备份