Python学习小技巧之列表项的排序

本文介绍的是关于Python列表项排序的相关内容,分享出来供大家参考学习,下面来看看详细的介绍:




典型代码1:    

data_list = [6, 9, 1, 3, 0, 10, 100, -100] 

data_list.sort() 

print(data_list)



输出1:    

[-100, 0, 1, 3, 6, 9, 10, 100]



典型代码2:

    

data_list = [6, 9, 1, 3, 0, 10, 100, -100] 

data_list_copy = sorted(data_list) 

print(data_list) 

print(data_list_copy)



输出2:    

[6, 9, 1, 3, 0, 10, 100, -100] 

[-100, 0, 1, 3, 6, 9, 10, 100]



应用场景



需要对列表中的项进行排序时使用。其中典型代码1是使用的列表自身的一个排序方法sort,这个方法自动按照升序排序,并且是原地排序,被排序的列表本身会被修改;典型代码2是调用的内置函数sort,会产生一个新的经过排序后的列表对象,原列表不受影响。这两种方式接受的参数几乎是一样的,他们都接受一个key参数,这个参数用来指定用对象的哪一部分为排序的依据:  
 

data_list = [(0, 100), (77, 34), (55, 97)] 

data_list.sort(key=lambda x: x[1]) #
我们想要基于列表项的第二个数进行排序 

print(data_list) 

  

>>> [(77, 34), (55,
97), (0, 100)]



另外一个经常使用的参数是reverse,用来指定是否按照倒序排序,默认为False:  
 

data_list = [(0, 100), (77, 34), (55, 97)] 

data_list.sort(key=lambda x: x[1], reverse=True) #
我们想要基于列表项的第二个数进行排序,并倒序 

print(data_list) 

>>> [(0, 100), (55,
97), (77, 34)]



带来的好处



1. 内置的排序方法,执行效率高,表达能力强,使代码更加紧凑,已读



2. 灵活的参数,用于指定排序的基准,比在类似于Java的语言中需要写一个comparator要方便很多



其它说明



1. sorted内置函数比列表的sort方法要适用范围更广泛,它可以对除列表之外的可迭代数据结构进行排序;



2. list内置的sort方法,属于原地排序,理论上能够节省内存的消耗;



总结



好了,以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助

Python学习小技巧之列表项的排序的更多相关文章

  1. python学习小总结(列表、元组、字典、集合、字符串)

    ---恢复内容开始--- 一.列表(list) 1.添加 append():追加,在列表末尾添加元素. 列表名.append(添加的元素) extend():扩展,在列表末尾添加元素. 列表名.ext ...

  2. Python编码小技巧分享【新手必学】

       本次分享了python编程小技巧总结如下,希望对大家有帮助,非常实用哦注意:很多人学Python过程中会遇到各种烦恼问题,没有人帮答疑.为此小编建了个Python全栈免费答疑交流.裙 :一久武其 ...

  3. 30个有关Python的小技巧,给程序员的 30 个基本 Python 贴士与技巧

    30个有关Python的小技巧 2013/07/04 · Python, 开发 · 4 评论 · Python 分享到: 66 本文由 伯乐在线 - Kevin Sun 翻译.未经许可,禁止转载!英文 ...

  4. python学习4—数据结构之列表、元组与字典

    python学习4—数据结构之列表.元组与字典 列表(list)深灰魔法 1. 连续索引 li = [1,1,[1,["asdsa",4]]] li[2][1][1][0] 2. ...

  5. 【python学习小知识】求绝对值和numpy和tensor的相互转换

    一.python求绝对值的三种方法 1.条件判断 2.内置函数abs() 3.内置模块 math.fabs 1.条件判段,判断大于0还是小于0,小于0则输出相反数即可 # 法1:使用条件判断求绝对值 ...

  6. 30个有关Python的小技巧

    从我开始学习python的时候,我就开始自己总结一个python小技巧的集合.后来当我什么时候在Stack Overflow或者在某个开源软件里看到一段很酷代码的时候,我就很惊讶:原来还能这么做!,当 ...

  7. <转> 30 个有关 Python 的小技巧

    目录[+] 1.1 拆箱 1.2 拆箱变量交换 1.3 扩展拆箱(只兼容python3) 1.4 负数索引 1.5 切割列表 1.6 负数索引切割列表 1.7指定步长切割列表 1.8 负数步长切割列表 ...

  8. python学习笔记(一)、列表和元祖

    该一系列python学习笔记都是根据<Python基础教程(第3版)>内容所记录整理的 1.通用的序列操作 有几种操作适用于所有序列,包括索引.切片.相加.相乘和成员资格检查.另外,Pyt ...

  9. Python(^^^^^小技巧^^^^^——不定期更新)

    偶然想到的小技巧 ''' 交互中对传入函数的参数的数目进行检测 ''' def func(a,b,c): print(a,b,c) s=input(">>>>:&qu ...

随机推荐

  1. 解决remix在线编译器连接本地私有链环境不成功的问题

    一.部署合约到私有链环境 选择"environment"里的"Web3 Provider" 弹出RPC连接地址输入框 输入我们Geth客户端安装服务器的IP:9 ...

  2. maven命令创建web骨架项目

    maven命令创建web骨架项目有以下两种方式: mvn archetype:create -DgroupId=org.seckill -DartifactId=seckill -Darchetype ...

  3. linux 命令格式和帮助

    命令的格式: command [options] [arguments] command:命令 options:  --单词全称   或   -单字简称 如: ls --all 等于     ls - ...

  4. VMware中Red Hat Enterprise Linux 7 配置桥接模式局域网

    在VMware中将虚拟机的网络连接设置为桥接模式. 在Red Hat中,找到应用程序--杂项--网络连接. 修改以太网下面的网络连接,在IPV4设置中,将方法改为“手动”,添加地址,子网掩码,网管,D ...

  5. kubernetes 创建超级管理员和密匙

    # 创建一个超级管理员adm_account="k8s-dash-admin"kubectl create serviceaccount ${adm_account} -n kub ...

  6. CentOS7 安装 RocketMQ 实践和小示例

    CentOS7 安装 RocketMQ 实践和小示例 1.通过 SSH 工具(比如 XShell)连接到 CentOS7 服务器上: 2.进入到 /usr/local 目录中: cd /usr/loc ...

  7. nginx代理服务

    代理----介于客户端和服务器之间 ICMP\POP\IMAP是邮件的收/发相关协议;RTMP是视频,音频等流媒体协议 http代理 正向代理 如果一个公司多台电脑中只有一台电脑能上网,那么不能上网的 ...

  8. 【Maven】-maven打包跳过javadoc

    有时候由于代码中注释错误(比如方法参数)或者maven javadoc插件版本有问题,导致打包报错,而我们着急打包验证问题,没有时间一一修改错误,这时候可以先跳过生成javadoc,继续下一步工作. ...

  9. BZOJ 1923: [Sdoi2010]外星千足虫 高斯消元+bitset

    高斯消元求解异或方程组,可以多学一下 $bitset$ 在位运算中的各种神奇操作. #include <cstdio> #include <bitset> #define N ...

  10. [HNOI2004][bzoj1211] 树的计数(prufer序列)

    1211: [HNOI2004]树的计数 Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 3432  Solved: 1295[Submit][Stat ...