傻傻分不清楚的sort,sorted,reverse,reversed

2023-11-05 09:20

本文主要是介绍傻傻分不清楚的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的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/348894

相关文章

usaco 1.3 Mixing Milk (结构体排序 qsort) and hdu 2020(sort)

到了这题学会了结构体排序 于是回去修改了 1.2 milking cows 的算法~ 结构体排序核心: 1.结构体定义 struct Milk{int price;int milks;}milk[5000]; 2.自定义的比较函数,若返回值为正,qsort 函数判定a>b ;为负,a<b;为0,a==b; int milkcmp(const void *va,c

leetcode-23Merge k Sorted Lists

带头结点。 /*** Definition for singly-linked list.* public class ListNode {* int val;* ListNode next;* ListNode(int x) { val = x; }* }*/public class Solution {public ListNode mergeKLists

stl的sort和手写快排的运行效率哪个比较高?

STL的sort必然要比你自己写的快排要快,因为你自己手写一个这么复杂的sort,那就太闲了。STL的sort是尽量让复杂度维持在O(N log N)的,因此就有了各种的Hybrid sort algorithm。 题主你提到的先quicksort到一定深度之后就转为heapsort,这种是introsort。 每种STL实现使用的算法各有不同,GNU Standard C++ Lib

leetcode#541. Reverse String II

题目 Given a string and an integer k, you need to reverse the first k characters for every 2k characters counting from the start of the string. If there are less than k characters left, reverse all of

C/C++经典排序问题,sort函数使用

目录 1. 前言 2. 正文 2.1 问题 2.2 解决办法 2.2.1 思路 2.2.2 代码实现 2.2.3 测试结果 3. 备注 1. 前言 大家在学习C语言的时候,是不是经常被排序算法折磨的很难那首,其实都是但是在C++中有专门的,排序函数,而且支持自定义排序算法。下面我就带大家看看,sort函数简单的数组排序中的应用。 2. 正文 2.1 问题 题目描述

Hive中order by,sort by,distribute by,cluster by的区别

一:order by order by会对输入做全局排序,因此只有一个Reducer(多个Reducer无法保证全局有序),然而只有一个Reducer,会导致当输入规模较大时,消耗较长的计算时间。关于order by的详细介绍请参考这篇文章:Hive Order by操作。 二:sort by sort by不是全局排序,其在数据进入reducer前完成排序,因此,如果用sort

[LeetCode] 7. Reverse Integer

题:https://leetcode.com/problems/reverse-integer/description/ 题目 Given a 32-bit signed integer, reverse digits of an integer. Example 1: Input: 123Output: 321Example 2:Input: -123Output: -321Ex

[LeetCode] 190. Reverse Bits

题:https://leetcode.com/problems/reverse-bits/ 题目大意 将32位的数,二进制翻转。 解题思路 解法和 将int a =123,翻转的思路 相同。 int b= 0;while(a>0){b = b*10 + a %10;a /=10;} 将新数整体左移一位,然后 取每个数的第i位置,将该位放到 新数的最低位。循环32次遍可以得到翻转。

LeetCode - 33. Search in Rotated Sorted Array

33. Search in Rotated Sorted Array  Problem's Link  ---------------------------------------------------------------------------- Mean:  给你一个数组,这个数组是由两个有序的数组拼接成的(无重复元素),在这个数组中查找元素k的下标. anal

list.sort实现根据对象的属性值对集合进行排序

list.sort实现根据对象的属性值对集合进行排序,如下所示List<Map<String,Object>> list = new ArrayList<>();Map<String,Object> map1 = new HashMap<>();map1.put("gz_id",1);map1.put("aaa","aaa");Map<String,Object> map2 = new H