python 中 sorted() 和 list.sort() 的用法
今天用python自带的sorted对一个列表进行排序, 在这里总结一下,只要是可迭代对象都可以用sorted 。
sorted(itrearble, cmp=None, key=None, reverse=False)
=号后面是默认值 默认是升序排序的, 如果想让结果降序排列,用reverse=True
最后会将排序的结果放到一个新的列表中, 而不是对iterable本身进行修改。
eg:
1, 简单排序
sorted('123456') # 字符串['1', '2', '3', '4', '5', '6']
sorted([1,4,5,2,3,6]) # 列表
[1, 2, 3, 4, 5, 6]
sorted({1:'q',3:'c',2:'g'}) # 字典, 默认对字典的键进行排序
[1, 2, 3]
sorted({1:'q',3:'c',2:'g'}.keys()) # 对字典的键
[1, 2, 3]
sorted({1:'q',3:'c',2:'g'}.values()) # 对字典的值
['c', 'g', 'q']
sorted({1:'q',3:'c',2:'g'}.items()) # 对键值对组成的元组的列表
[(1, 'q'), (2, 'g'), (3, 'c')]
2, 对元素指定的某一部分进行排序,关键字排序
s = ['Chr1-10.txt','Chr1-1.txt','Chr1-2.txt','Chr1-14.txt','Chr1-3.txt','Chr1-20.txt','Chr1-5.txt']
我想要按照-后的数字的大小升序排序。要用到key
sorted(s, key=lambda d : int(d.split('-')[-1].split('.')[0]))['Chr1-1.txt', 'Chr1-2.txt', 'Chr1-3.txt', 'Chr1-5.txt', 'Chr1-10.txt', 'Chr1-14.txt', 'Chr1-20.txt']
这就是key的功能,制定排序的关键字,通常都是一个lambda函数,当然你也可以事先定义好这个函数。如果不讲这个关键字转化为整型,结果是这样的:
sorted(s, key=lambda d : d.split('-')[-1].split('.')[0])['Chr1-1.txt', 'Chr1-10.txt', 'Chr1-14.txt', 'Chr1-2.txt', 'Chr1-20.txt', 'Chr1-3.txt', 'Chr1-5.txt']
这相当于把这个关键字当做字符串了,很显然,在python中,'2' > '10'
你可以定制你想要的key, 如 key = lambda x : len(x) 按照序列的长度去排序。key= lambda x : (x[1], x[0]) 按二个元素,再第一个,等等……
3,cmp不怎么用,因为key和reverse比单独一个cmp效率要高。
如果进行降序排列,只需要加上reverse=True
总结: sorted 和list.sort 都接受key, reverse定制。但是区别是。list.sort()是列表中的方法,只能用于列表。而sorted可以用于任何可迭代的对象。list.sort()是在原序列上进行修改,不会产生新的序列。所以如果你不需要旧的序列,可以选择list.sort()。 sorted() 会返回一个新的序列。旧的对象依然存在。
如果你有一个字典,键是正负都有的只有一个小数点的数字字符串, 你想按数字从小到大排列键,首先把键列表转化为浮点型。对浮点型数据用sorted排序,然后再转化为只有一个小数点的数字字符串:
for i in ['%.1f'%k for k in sorted(float(j) for j in fb_RA_11.keys())]:
by freemao https://www.cnblogs.com/freemao/p/3869994.html
python 中 sorted() 和 list.sort() 的用法相关推荐
- Python中yield和yield from的用法
yield 后面接的是 future 对象 调用方 委托生成器 yield from 直接给出循环后的结果 yield from 委托者和子生成器直接通信 yield from 直接处理stopIte ...
- python中list[1啥意思_详解Python中list[::-1]的几种用法
本文主要介绍了Python中list[::-1]的几种用法,分享给大家,具体如下: s = "abcde" list的[]中有三个参数,用冒号分割 list[param1:para ...
- python中os.path.join()的循环用法_Python中.join()和os.path.join()两个函数的用法详解
Python中有.join()和os.path.join()两个函数,具体作用如下: . join(): 连接字符串数组.将字符串.元组.列表中的元素以指定的字符(分隔符)连接生成一个新的字符串 ...
- python items函数用法,Python中dictionary items()系列函数的用法实例
本文实例讲述了Python中dictionary items()系列函数的用法,对Python程序设计有很好的参考借鉴价值.具体分析如下: 先来看一个示例: import html # availab ...
- python enumerate函数_关于python中enumerate和zip函数的用法及举例
关于python中enumerate和zip函数的用法及举例 关于enumerate函数: enumerate函数可以同时返回列表或元组等可迭代对象的下标和内容,但实际上,enumerate函数实际返 ...
- python中关于try,expect的用法
python中关于try,expect的用法 try: code except Error1 as e: #处理Error1异常 print(e) 上式说明,运行code,如果code恰巧出现了Err ...
- python中all()和any()函数的用法
python中all()和any()函数的用法 若判断两个数组相等,all()函数表示的是数组中所有数都要相等才输出TRUE,any()函数则是只要有一个数相等则就输出TRUE.如下代码所示: imp ...
- 一文搞定python中的multiply()和dot以及用法
python中的multiply()和dot以及*用法.md 首先创建如下的数组和矩阵,其中a,b为数组,A,B为矩阵 import numpy as npa = np.arange(1,5).res ...
- python中的or的两种用法
python中的or的两种用法 python中or除了常见的和and作为判断的条件外,还有一种不多见但很实用的用法,那就是: a = b or c 在这条赋值语句中的 or 的含义是判断 b 和 c ...
最新文章
- 世界首批智能音箱AI IQ测试报告,小米、京东和阿里初步PK
- python培训比较好的机构-上海python培训比较好的机构
- qt中对任务繁忙时QProgressDialog的使用
- Python编程基础:第八节 判断语句If Statements
- DL之DNN:自定义2层神经网络TwoLayerNet模型(计算梯度两种方法)利用MNIST数据集进行训练、预测
- Spring Boot——游戏成就系统设计DEMO
- tablemodel dapter区别
- android工程jrr版本怎么改,ionic3 生成android 如何控制versionCode版本号
- Fedora7 安装完全过程
- php中数组下标,PHP数组介绍_php
- 近 5 亿人的隐私,毁于一位程序员之手?
- 打印表单_超市生鲜日常作业表单,打印出来就能用!
- 常用的Linux的命令
- 896.Montonic Array - LeetCode
- 零基础学启发式算法(1)-贪心算法(Greedy Algorithm)
- php公众号第三方登录,微信公众号开发小记——3.接入三方登录
- 下载excel 导入模板
- win7一激活就蓝屏
- 如何利用Spring Boot框架开发一个全球化的应用程序
- 基于Vue3和Nestjs的网上匿名聊天网站的实现