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学习小技巧之列表项的排序的更多相关文章
- python学习小总结(列表、元组、字典、集合、字符串)
---恢复内容开始--- 一.列表(list) 1.添加 append():追加,在列表末尾添加元素. 列表名.append(添加的元素) extend():扩展,在列表末尾添加元素. 列表名.ext ...
- Python编码小技巧分享【新手必学】
本次分享了python编程小技巧总结如下,希望对大家有帮助,非常实用哦注意:很多人学Python过程中会遇到各种烦恼问题,没有人帮答疑.为此小编建了个Python全栈免费答疑交流.裙 :一久武其 ...
- 30个有关Python的小技巧,给程序员的 30 个基本 Python 贴士与技巧
30个有关Python的小技巧 2013/07/04 · Python, 开发 · 4 评论 · Python 分享到: 66 本文由 伯乐在线 - Kevin Sun 翻译.未经许可,禁止转载!英文 ...
- python学习4—数据结构之列表、元组与字典
python学习4—数据结构之列表.元组与字典 列表(list)深灰魔法 1. 连续索引 li = [1,1,[1,["asdsa",4]]] li[2][1][1][0] 2. ...
- 【python学习小知识】求绝对值和numpy和tensor的相互转换
一.python求绝对值的三种方法 1.条件判断 2.内置函数abs() 3.内置模块 math.fabs 1.条件判段,判断大于0还是小于0,小于0则输出相反数即可 # 法1:使用条件判断求绝对值 ...
- 30个有关Python的小技巧
从我开始学习python的时候,我就开始自己总结一个python小技巧的集合.后来当我什么时候在Stack Overflow或者在某个开源软件里看到一段很酷代码的时候,我就很惊讶:原来还能这么做!,当 ...
- <转> 30 个有关 Python 的小技巧
目录[+] 1.1 拆箱 1.2 拆箱变量交换 1.3 扩展拆箱(只兼容python3) 1.4 负数索引 1.5 切割列表 1.6 负数索引切割列表 1.7指定步长切割列表 1.8 负数步长切割列表 ...
- python学习笔记(一)、列表和元祖
该一系列python学习笔记都是根据<Python基础教程(第3版)>内容所记录整理的 1.通用的序列操作 有几种操作适用于所有序列,包括索引.切片.相加.相乘和成员资格检查.另外,Pyt ...
- Python(^^^^^小技巧^^^^^——不定期更新)
偶然想到的小技巧 ''' 交互中对传入函数的参数的数目进行检测 ''' def func(a,b,c): print(a,b,c) s=input(">>>>:&qu ...
随机推荐
- 解决remix在线编译器连接本地私有链环境不成功的问题
一.部署合约到私有链环境 选择"environment"里的"Web3 Provider" 弹出RPC连接地址输入框 输入我们Geth客户端安装服务器的IP:9 ...
- maven命令创建web骨架项目
maven命令创建web骨架项目有以下两种方式: mvn archetype:create -DgroupId=org.seckill -DartifactId=seckill -Darchetype ...
- linux 命令格式和帮助
命令的格式: command [options] [arguments] command:命令 options: --单词全称 或 -单字简称 如: ls --all 等于 ls - ...
- VMware中Red Hat Enterprise Linux 7 配置桥接模式局域网
在VMware中将虚拟机的网络连接设置为桥接模式. 在Red Hat中,找到应用程序--杂项--网络连接. 修改以太网下面的网络连接,在IPV4设置中,将方法改为“手动”,添加地址,子网掩码,网管,D ...
- kubernetes 创建超级管理员和密匙
# 创建一个超级管理员adm_account="k8s-dash-admin"kubectl create serviceaccount ${adm_account} -n kub ...
- CentOS7 安装 RocketMQ 实践和小示例
CentOS7 安装 RocketMQ 实践和小示例 1.通过 SSH 工具(比如 XShell)连接到 CentOS7 服务器上: 2.进入到 /usr/local 目录中: cd /usr/loc ...
- nginx代理服务
代理----介于客户端和服务器之间 ICMP\POP\IMAP是邮件的收/发相关协议;RTMP是视频,音频等流媒体协议 http代理 正向代理 如果一个公司多台电脑中只有一台电脑能上网,那么不能上网的 ...
- 【Maven】-maven打包跳过javadoc
有时候由于代码中注释错误(比如方法参数)或者maven javadoc插件版本有问题,导致打包报错,而我们着急打包验证问题,没有时间一一修改错误,这时候可以先跳过生成javadoc,继续下一步工作. ...
- BZOJ 1923: [Sdoi2010]外星千足虫 高斯消元+bitset
高斯消元求解异或方程组,可以多学一下 $bitset$ 在位运算中的各种神奇操作. #include <cstdio> #include <bitset> #define N ...
- [HNOI2004][bzoj1211] 树的计数(prufer序列)
1211: [HNOI2004]树的计数 Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 3432 Solved: 1295[Submit][Stat ...