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

2023-11-19

前言


在平常编码过程中,列表是经常用的,而常用的方法也基本就是遍历循环进行元素的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函数较为特殊,返回一个内存对象,而不是反转后的值

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

傻傻分不清楚的sort,sorted,reverse,reversed 的相关文章

  • Mac OS 上的诗歌安装失败,显示“should_use_symlinks”

    我正在尝试使用以下命令安装诗歌 curl sSL https install python poetry org python3 但它失败了 但有以下例外 例外 此版本的 python 无法在不使用符号链接的情况下创建 venvs 下面是详
  • 如何在python 3.7中生成条形码

    我正在使用 python 3 7 为了生成条形码 我尝试使用安装 pyBarcode 库pip install pyBarcode 但它显示以下错误 找不到满足 pyBarcode 要求的版本 来自版本 找不到 pyBarcode 的匹配分
  • 使用 pygame 显示 unicode 符号

    我检查了其他答案 但不明白为什么我的代码错误地显示 This is what I currently see https i stack imgur com 8tNIK png 这是关于文本渲染的相关代码 font pygame font
  • 使用 python 中的公式函数使从 Excel 中提取的值的百分比相等

    import xlrd numpy excel Users Bob Desktop wb1 xlrd open workbook excel assignment3 xlsx sh1 wb1 sheet by index 0 colA co
  • 补丁 - 为什么相对补丁目标名称不起作用?

    我已经从模块导入了一个类 但是当我尝试修补类名而不使用模块作为前缀时 出现类型错误 TypeError Need a valid target to patch You supplied MyClass 例如 以下代码给出了上述错误 imp
  • 工作日重新订购 Pandas 系列

    使用 Pandas 我提取了一个 CSV 文件 然后创建了一系列数据来找出一周中哪几天崩溃最多 crashes by day bc DAY OF WEEK value counts 然后我将其绘制出来 但当然它按照与该系列相同的排名顺序绘制
  • sklearn 中的 pca.inverse_transform

    将我的数据拟合后 X 我的数据 pca PCA n components 1 pca fit X X pca pca fit transform X 现在 X pca 具有一维 当我根据定义执行逆变换时 它不是应该返回原始数据 即 X 二维
  • Emacs 24.x 上的 IPython 支持

    我对 IPython 与 Emacs 的集成感到困惑 从 Emacs 24 开始 Emacs 附带了自己的python el 该文件是否支持 IPython 还是仅支持 Python 另外 维基百科 http emacswiki org e
  • 在 matplotlib 中的极坐标图上移动径向刻度标签

    From matplotlib 示例 http matplotlib org examples pylab examples polar demo html import numpy as np import seaborn as sbs
  • .pyx 文件出现未知文件类型错误

    我正在尝试构建一个包含 pyx 文件的 Python 包 pyregion 但在构建过程中出现错误 检查以下输出 python setup py build running build running build py creating b
  • Tensorflow 与 Keras 的兼容性

    我正在使用 Python 3 6 和 Tensorflow 2 0 并且有一些 Keras 代码 import keras from keras models import Sequential from keras layers impo
  • 使用Python计算目录的大小?

    在我重新发明这个特殊的轮子之前 有没有人有一个很好的例程来使用 Python 计算目录的大小 如果例程能够很好地以 Mb Gb 等格式格式化大小 那就太好了 这会遍历所有子目录 总结文件大小 import os def get size s
  • 使用 Keras np_utils.to_categorical 的问题

    我正在尝试将整数的 one hot 向量数组制作为 keras 将能够使用的 one hot 向量数组来拟合我的模型 这是代码的相关部分 Y train np hstack np asarray dataframe output vecto
  • 使用“默认”环境变量启动新的子进程

    我正在编写一个构建脚本来解析依赖的共享库 及其共享库等 这些共享库在正常情况下是不存在的PATH环境变量 为了使构建过程正常工作 让编译器找到这些库 PATH已更改为包含这些库的目录 构建过程是这样的 加载器脚本 更改 PATH gt 基于
  • 返回表示每组内最大值的索引的一系列数字位置

    考虑一下这个系列 np random seed 3 1415 s pd Series np random rand 100 pd MultiIndex from product list ABDCE list abcde One Two T
  • SocketIO + Flask 检测断开连接

    我在这里有一个不同的问题 但意识到它可以简化为 如何检测客户端何时从页面断开连接 关闭其页面或单击链接 换句话说 套接字连接关闭 我想制作一个带有更新用户列表的聊天应用程序 并且我在 Python 上使用 Flask 当用户连接时 浏览器发
  • 当数据库不是 Django 模型时,是否可以使用数据库中的表?

    是否可以从应用程序数据库中的表获取查询集 该表不是应用程序中的模型 如果我有一个不是名为 cartable 的模型的表 从概念上讲 我想这样做 myqueryset cartable objects all 有没有相对简单的方法来做到这一点
  • Django Admin 中的反向内联

    我有以下 2 个型号 现在我需要将模型 A 内联到模型 B 的页面上 模型 py class A models Model name models CharField max length 50 class B models Model n
  • Django 与谷歌图表

    我试图让谷歌图表显示在我的页面上 但我不知道如何将值从 django 视图传递到 javascript 以便我可以绘制图表 姜戈代码 array Year Sales Expenses 2004 1000 400 2005 1170 460
  • 从 pandas DataFrame 中删除少于 K 个连续 NaN

    我正在处理时间序列数据 我在从数据帧列中删除小于或等于阈值的连续 NaN 时遇到问题 我尝试查看一些链接 例如 标识连续 NaN 出现的位置以及计数 Pandas NaN 孔的游程长度 https stackoverflow com que

随机推荐

  • 计算机的保护模式与实模式

    一 背景 80386开始 CPU有三种工作方式 实模式 保护模式和虚拟8086模式 只有在刚刚启动的时候是real mode 等到操作系统运行起来以后就切换到protected mode 实模式只能访问地址在1M以下的内存称为常规内存 我们
  • java ssm常遇见的问题_ssm增删改查出现的问题总结

    1 org springframework beans factory BeanCreationException Error creating bean with name org mybatis spring mapper Mapper
  • python 多进程进行文件处理(一)

    在文件处理的时候 经常会遇见大文件数据 单进程处理速度太慢 可以通过多进程来提升效率 应用场景一 同时并行处理多个小文件 处理完成后 写回多个文件 def read wiki data infile outfile param1 单个文件的
  • 【ROS】usb_cam相机标定

    1 唠叨两句 当我们要用相机做测量用途时 就需要做相机标定了 不然得到的计算结果会有很大误差 标定的内容包括三部分 内参 外参还有畸变参数 所以标定的过程就是要求得上面这些参数 以前弄这个事估计挺麻烦 需要做实验和计算才能得到 现在通过ro
  • springboot连接多个redis

    文章目录 前言 方法 yml配置文件 使用 原生说明 总结 前言 我想不到 就这个问题还折腾了好一会儿 方法 yml配置文件 spring application name multiredis redis onedb host 192 1
  • 编程课程与数学的关系

    教学是人类的高级思维活动 越深入 需要的各种思维能力就越多 当思维能力不足 和别人的距离就拉开了 格物斯坦小坦克知道编程课程和数学的关系是密不可分的 小学三年级以前 数学只需要记忆力就可以了 记住一些计算规则 获得90分很容易 家长往往以成
  • Springboot启动后执行方法

    文章目录 一 注解 PostConstruct 二 CommandLineRunner接口 三 实现ApplicationRunner接口 四 实现ApplicationListener 五 四种方式的执行顺序 一 注解 PostConst
  • 8个超实用的Python库合集,推一次火一次!

    Python 是一个很棒的语言 它是世界上发展最快的编程语言之一 它一次又一次地证明了在开发人员职位中和跨行业的数据科学职位中的实用性 整个 Python 及其库的生态系统使它成为全世界用户 初学者和高级用户 的合适选择 它的成功和流行的原
  • getopts命令详解

    http blog sina com cn s blog 616b428f01019z5l html http blog csdn net wesleyluo article details 5279875 写程序的时候经常要处理命令行参数
  • 程序员办公桌都如此霸气,网友:砖头当杯垫也是不敢惹!

    程序员初入职场 办公桌上可能就一台电脑 一个键盘 一个鼠标 还有就是一个水杯 然而对于老程序员们来说 他们的办公桌肯定会有一大波能符合他们气质的 神器 今天小编就来带大家看看这些 总听人说不会写bug的程序员一定不是个好的产品经理 程序员们
  • 如何在git已有项目中创建空分支

    一 背景 在git中创建一个新的分支都需要指定一个父节点 即必须基于已有的分支创建新的分支 项目已经开发 维护了一段时间如果master分支不是主分支的话 但创建一个新的空分支在实际的项目中又是一种常见需求 比如 项目的某个分支已经演化的比
  • 弱网测试

    首先我们要清楚什么是弱网呢 举一个例子 我们在一个封闭环境中 有时候APP打开的特别慢 或者是一直加载不出来我们想要看到的信息 也就是说这个时候的网速特别的慢 这种状态呢 我们可以理解为弱网 弱网直接造成的影响有丢包 数据无法加载 消息更新
  • Js中async/await的执行顺序详解

    前言 虽然大家知道async await 但是很多人对这个方法中内部怎么执行的还不是很了解 本文是我看了一遍技术博客理解 JavaScript 的 async await 如果对async await不熟悉可以先看下这篇文章 后拓展了一下
  • Tomcat调优常见参数配置

    Tomcat 是一个流行的 Web 应用服务器 以下是一些常见的 Tomcat 配置参数 1 端口配置 HTTP 端口 tomcat 默认使用 8080 端口 可以通过修改 server xml 文件中的 Connector 配置来更改端口
  • QT学习OpenGL序列: Texture

    学习OpenGL文理 1 头文件 ifndef COPENGLWIDGETHELLOTEXTURES H define COPENGLWIDGETHELLOTEXTURES H 控件名称 Hello Textures 注意 STD C Ve
  • Vim中多行删除

    在操作虚拟机的时候 都会出错 当在vim中出现问题的时候 可以在dw普通模式下删除对应的单词 如果在vim中使用多行删除 可以使用dd vim 命令 将行数添加到该命令中 如10dd将从光标底部删除10行 包含光标行在内 删除单行 1 按
  • The Necklace 【UVA - 10054】【欧拉回路详解】

    题目链接1 题目链接2 题目求的是一串珠子 要让它们首尾相互照应才能串起来 并且 最后要连成一个环 使得最后的珠子的尾与第一个珠子的头相互对应 那么 这道题就是道求欧拉回路的题了 我们要先判断这是不是能够构成欧拉回路 这是个无向图 再对于需
  • 密码学原语如何应用?解析密文同态性的妙用

    隐私数据在密文形式下是否依旧可以加减乘除 其背后的同态性原理具体指什么 半同态性和全同态性有什么区别 单密钥和多密钥同态加密有哪些奇妙的应用场景 隐私保护方案设计 往往需要在密文状态下 对隐私数据进行特定的业务操作 以此保障数据的机密性 沿
  • Tomcat单实例安装部署

    自说 Tomcat 服务器是一个免费的开放源代码的Web 应用服务器 属于轻量级应用服务器 主要用于处理动态web数据 部署java环境 上传jdk包 使用xftp上传 解压 tar zxvf u01 jdk 8u333 linux i58
  • 傻傻分不清楚的sort,sorted,reverse,reversed

    前言 在平常编码过程中 列表是经常用的 而常用的方法也基本就是遍历循环进行元素的append 还有很多方法不熟悉 比如有一次遇到一个问题 将一个列表进行反转 拿起百度 得到答案 方法1 列表切片 步长设置为 1 方法2 列表自带方法 lst