本文主要是介绍傻傻分不清楚的sort,sorted,reverse,reversed,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
前言
在平常编码过程中,列表是经常用的,而常用的方法也基本就是遍历循环进行元素的append,还有很多方法不熟悉,比如有一次遇到一个问题:将一个列表进行反转?
拿起百度,得到答案:
方法1:列表切片,步长设置为-1
方法2:列表自带方法:lst.reverse()
然而这只是一个开始,赶紧恶补查看了列表的所有方法,其中有两个方法sort,reverse方法,让我想起了还有很相似的sorted,reversed函数,就有些分不清楚了,在静下心来研究了一番之后,终于理清了
在理解sort,reverse方法和sorted,reversed函数过程中想到了下面的两个概念,个人而言,对于这两个概念的理解有助于今天内容的get
老生常谈:面向对象和面向过程的编程思想
个人理解仅供参考:
python是一个面向对象的开发语言,基于一个对象,具有哪些属性,哪些行为,进行一个整体封装,那么其实列表也就是一个对象,其中python目前所支持列表的操作方法比如:append,insert,sort,reverse,就是列表对象可以执行的行为,也就是对象方法
而单独的函数,比如sorted,reversed函数,可以理解为是一个面向过程的编程,实现的是一个过程,那么某一个对象需要用到此过程,再对于对象处理,比如:在java学习中,用车辆的启动、停止实例介绍,采用面向过程的编程,就是将启动、停止过程进行一个定义,不同的对象都包含启动过程,如:小汽车,大卡车,想要跑起来,都会经过这个过程,只不过根据传入的车辆类型不同,做出不同的启动过程,而面向对象就是将车的启动、停止过程进行一个类的封装,只要是车辆类都会有这样的行为,然后不同的对象,可以调用具体的对象方法。区别就是:一个是以过程为焦点,一个是以对象为焦点
重新理解了面向对象和面向过程,再来看sort方法和sorted函数;reverse方法和reversed函数
(1)sort方法和sorted函数:排序使用
①列表sort方法:
使用语法:lst.sort() #列表对象方法调用,lst为列表对象,如:lst=[1,24,5,2,3],专属于列表对象的
方法用途:对原列表进行排序,就是改变了原列表,具体请看下图,返回值为None
理解说明:列表对象有一个sort()方法,实现将原列表进行一个排序,然后return,因为python 默认return返回一个None,所以非要将lst.sort()指向一个变量,那么这个变量值就是None
②sorted函数
使用语法:sorted(lst,args) #函数传参调用,其中lst是需要排序的对象:可以是字符串,也可以是字典,args是按照指定参数进行一个排序,比如reverse,True表示:反序排列,False表示:正序排列,还有其他的一些参数可以设定
函数用途:对传入的参数对象进行排序,并返回排序后的列表,不作用于原列表
理解说明:sorted()是一个函数,即面向过程,将排序过程进行一个封装,按照不同的对象进行处理,不同的对象最后统一都是以列表的形式返回数据,即 return a_lst,
(2)reverse方法和reversed函数:反转序列使用
①列表的reverse方法
使用语法:lst.reverse() #对象方法调用,lst为列表对象,如:lst=[1,24,5,2,3],专属于列表对象的
方法用途:对原列表进行反转,改变了原列表,返回值为None
理解说明:实现与sort()方法基本一致,功能的差异是对一个列表进行反转然后return,同样因为python 默认return返回一个None,所以当非要将lst.reverse()指向一个变量,那么这个变量值也是None
②reversed函数
使用语法:reversed(lst) #函数传参调用,其中lst是需要排序的对象:需要是一个序列,如列表,字符串
方法用途:对参数对象进行一个反转,返回一个反转后内存对象,而不是反转后的值
理解说明:与sorted函数不同的是,reversed函数不是返回一个反转后的列表或者字符串,而是返回一个内存对象,且不支持字典的反转
总结:
到此就基本上比较清晰了,sort和reverse是列表对象的方法,列表对象独有的方法,并且这两种方法都是在原列表上进行操作,并直接返回,返回值为None,而sorted函数是支持字符串,字典,列表对象的排序,不在原列表上排序,而是返回一个新的列表,reveresd函数较为特殊,返回一个内存对象,而不是反转后的值
这篇关于傻傻分不清楚的sort,sorted,reverse,reversed的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!