今天用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() 的用法相关推荐

  1. Python中yield和yield from的用法

    yield 后面接的是 future 对象 调用方 委托生成器 yield from 直接给出循环后的结果 yield from 委托者和子生成器直接通信 yield from 直接处理stopIte ...

  2. python中list[1啥意思_详解Python中list[::-1]的几种用法

    本文主要介绍了Python中list[::-1]的几种用法,分享给大家,具体如下: s = "abcde" list的[]中有三个参数,用冒号分割 list[param1:para ...

  3. python中os.path.join()的循环用法_Python中.join()和os.path.join()两个函数的用法详解

    Python中有.join()和os.path.join()两个函数,具体作用如下: . join():    连接字符串数组.将字符串.元组.列表中的元素以指定的字符(分隔符)连接生成一个新的字符串 ...

  4. python items函数用法,Python中dictionary items()系列函数的用法实例

    本文实例讲述了Python中dictionary items()系列函数的用法,对Python程序设计有很好的参考借鉴价值.具体分析如下: 先来看一个示例: import html # availab ...

  5. python enumerate函数_关于python中enumerate和zip函数的用法及举例

    关于python中enumerate和zip函数的用法及举例 关于enumerate函数: enumerate函数可以同时返回列表或元组等可迭代对象的下标和内容,但实际上,enumerate函数实际返 ...

  6. python中关于try,expect的用法

    python中关于try,expect的用法 try: code except Error1 as e: #处理Error1异常 print(e) 上式说明,运行code,如果code恰巧出现了Err ...

  7. python中all()和any()函数的用法

    python中all()和any()函数的用法 若判断两个数组相等,all()函数表示的是数组中所有数都要相等才输出TRUE,any()函数则是只要有一个数相等则就输出TRUE.如下代码所示: imp ...

  8. 一文搞定python中的multiply()和dot以及用法

    python中的multiply()和dot以及*用法.md 首先创建如下的数组和矩阵,其中a,b为数组,A,B为矩阵 import numpy as npa = np.arange(1,5).res ...

  9. python中的or的两种用法

    python中的or的两种用法 python中or除了常见的和and作为判断的条件外,还有一种不多见但很实用的用法,那就是: a = b or c 在这条赋值语句中的 or 的含义是判断 b 和 c ...

最新文章

  1. 世界首批智能音箱AI IQ测试报告,小米、京东和阿里初步PK
  2. python培训比较好的机构-上海python培训比较好的机构
  3. qt中对任务繁忙时QProgressDialog的使用
  4. Python编程基础:第八节 判断语句If Statements
  5. DL之DNN:自定义2层神经网络TwoLayerNet模型(计算梯度两种方法)利用MNIST数据集进行训练、预测
  6. Spring Boot——游戏成就系统设计DEMO
  7. tablemodel dapter区别
  8. android工程jrr版本怎么改,ionic3 生成android 如何控制versionCode版本号
  9. Fedora7 安装完全过程
  10. php中数组下标,PHP数组介绍_php
  11. 近 5 亿人的隐私,毁于一位程序员之手?
  12. 打印表单_超市生鲜日常作业表单,打印出来就能用!
  13. 常用的Linux的命令
  14. 896.Montonic Array - LeetCode
  15. 零基础学启发式算法(1)-贪心算法(Greedy Algorithm)
  16. php公众号第三方登录,微信公众号开发小记——3.接入三方登录
  17. 下载excel 导入模板
  18. win7一激活就蓝屏
  19. 如何利用Spring Boot框架开发一个全球化的应用程序
  20. 基于Vue3和Nestjs的网上匿名聊天网站的实现

热门文章

  1. 性能测试的“2-5-10原则”
  2. WiresShark 使用方法
  3. std::bind技术内幕
  4. .net中下载文件的方法(转)
  5. Unicorn 4.6.3 发布,Rack的HTTP服务器
  6. UML应用开发详解--视频
  7. 【OfficeDIY】有了站点了 ^_^
  8. 【云计算的1024种玩法】巧用迁云工具轻松实现服务器迁移到ECS
  9. 基于struts2和hibernate的登录和注册功能——完整实例
  10. c#泛型的使用[转]