傻傻分不清楚的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函数较为特殊,返回一个内存对象,而不是反转后的值

猜你喜欢

转载自blog.csdn.net/Jolting/article/details/88037270