当前位置: 首页 > news >正文

做网站腾讯云服务器吗/廊坊seo快速排名

做网站腾讯云服务器吗,廊坊seo快速排名,政府网站集约建设自查报告,html5做网站好吗文:志军100 源:Python之禅sorted 用于对集合进行排序(这里说的集合是对可迭代对象的一个统称,他们可以是列表、字典、set、甚至是字符串),它的功能非常强大,本文将深入浅出地介绍 sorted 的各种使用场景。1、默认情况&…

文:志军100 源:Python之禅

sorted 用于对集合进行排序(这里说的集合是对可迭代对象的一个统称,他们可以是列表、字典、set、甚至是字符串),它的功能非常强大,本文将深入浅出地介绍 sorted 的各种使用场景。

1、默认情况,sorted 函数将按列表升序进行排序,并返回一个新列表对象,原列表保持不变,最简单的排序

>>> nums = [3,4,5,2,1]>>> sorted(nums)[1, 2, 3, 4, 5]

2、降序排序,如果要按照降序排列,只需指定参数 reverse=True 即可

>>> sorted(nums, reverse=True)[5, 4, 3, 2, 1]

3、如果要按照某个规则排序,则需指定参数 key, key 是一个函数对象,例如字符串构成的列表,我想按照字符串的长度来排序

>>> chars = ['Andrew', 'This', 'a', 'from', 'is', 'string', 'test']>>> sorted(chars, key=len)['a', 'is', 'from', 'test', 'This', 'Andrew', 'string']

len 是内建函数,sorted 函数在排序的时候会用len去获取每个字符串的长度来排序。 有些人可能使用匿名函数 key=lambda x: len(x) ,其实多此一举。

3bf7d44d109778d4cef10d603cb783fa.png

4、如果是一个复合的列表结构,例如由元组构成的列表,要按照元组中的第二个元素排序,那么可以用 lambda 定义一个匿名函数

>>> students = [('zhang', 'A'), ('li', 'D'), ('wang', 'C')]>>> sorted(students, key=lambda x: x[1])[('zhang', 'A'), ('wang', 'C'), ('li', 'D')]

这里将按照字母 A-C-D 的顺序排列。

5、如果要排序的元素是自定义类,例如Student类按照年龄来排序,则可以写成

>>> class Student: def __init__(self, name, grade, age): self.name = name self.grade = grade self.age = age def __repr__(self): return repr((self.name, self.grade, self.age))>>> student_objects = [ Student('john', 'A', 15), Student('jane', 'B', 12), Student('lily', 'A', 12), Student('dave', 'B', 10), ]>>> sorted(student_objects, key=lambda t:t.age)[('dave', 'B', 10), ('jane', 'B', 12), ('lily', 'A', 12), ('john', 'A', 15)]

6、和数据库的排序一样,sorted 也可以根据多个字段来排序,例如我有先要根据age排序,如果age相同的则根据grade排序,则可以使用元组:

>>> sorted(student_objects, key=lambda t:(t.age, t.grade))[('dave', 'B', 10), ('lily', 'A', 12), ('jane', 'B', 12), ('john', 'A', 15)]

7、前面碰到的排序场景都是建立在两个元素是可以互相比较的前提下,例如数值按大小比较, 字母按顺序比较,如果遇到本身是不可比较的,需要我们自己来定义比较规则的情况如何处理呢?

举个简单的例子:

>>> nums = [2, 1.5, 2.5, '2', '2.5']>>> sorted(nums)TypeError: '

一个整数列表中,可能有数字,字符串,在Python3中,字符串与数值是不能比较的,而Python2中任何类型都可以比较,这是两个版本中一个很大的区别:

# python2.7>>> "2.5" > 2True# python3.6>>> "2.5" > 2TypeError: '>' not supported between instances of 'str' and 'int'

我们需要使用 functools 模块中的 cmp_to_key 来指定比较函数是什么。

import functoolsdef compare(x1, x2): if isinstance(x1, str): x1 = float(x1) if isinstance(x2, str): x2 = float(x2) return x1 - x2>>>sorted(nums, key=functools.cmp_to_key(compare))[1.5, 2, '2', 2.5, '2.5']

8、关于 sorted 函数,Python2和Python3之间的区别是Python2中的sorted 可以指定cmp关键字参数,就是当遇到需要自定义比较操作的数据可以通过 cmp=compare 来实现,不需要像Python3中还需要导入functools.cmp_to_key实现。

nums = [2, 1.5, 2.5, '2', '2.5']def compare(x1, x2): if isinstance(x1, str): x1 = float(x1) if isinstance(x2, str): x2 = float(x2) return 1 if x1 - x2 > 0 else -1 if x1 - x2 < 0 else 0>>> sorted(nums, cmp=compare)[1.5, 2, '2', 2.5, '2.5']

其实,在Python2中,上面这种情况你不指定cmp,默认也会按照这种方式排序,记住,Python2中,任何东西(不同类型之间)都可以比较,而Python3只有同类型数据可以比较。

9、 对于集合构成的列表,有一种更高效的方法指定这个key

>>> from operator import itemgetter>>> sorted(students, key=itemgetter(1))[('zhang', 'A'), ('wang', 'C'), ('li', 'D')]

10、同样的,对于自定义类,也有一种更高效的方法指定key

>>> from operator import attrgetter>>> sorted(student_objects, key=attrgetter('age'))[('dave', 'B', 10), ('jane', 'B', 12), ('john', 'A', 15)]

如果参与排序的字段有两个怎么办,你可以这样:

>>> sorted(student_objects, key=attrgetter('grade', 'age'))[('john', 'A', 15), ('dave', 'B', 10), ('jane', 'B', 12)]

以上是关于 sorted 函数的全部。

如果有想学习Python的朋友,请点击这里

http://www.jmfq.cn/news/4907053.html

相关文章:

  • 聊城做网站的公司精英/百度云网页版入口
  • 信阳住房和城乡建设局网站/市场营销推广
  • 做网站界面需要注意什么问题/赣州网站建设
  • 建设网站服务器/百度网盘客服电话24小时
  • 大型营销型网站建设/上海关键词排名提升
  • 建云购网站吗/关键词排名零芯互联排名
  • 网站推广策划方案范文/个人怎么注册自己的网站
  • 在线图片编辑源码/seo资源是什么意思
  • 哪些网站可以做相册视频/广州百度seo 网站推广
  • 网站直播怎样做/宁波网站seo诊断工具
  • 外贸婚纱网站 侵权/同城推广平台有哪些
  • 网站开发需要掌握的知识/佛山网络推广培训
  • 中国建设银行最新招聘信息网站/微信推广怎么弄
  • 剑灵代做装备网站/排名优化系统
  • 如何做单网页网站/就业seo好还是sem
  • 捕鱼游戏在哪做网站/外贸seo软件
  • 160 作者 网站建设/seo销售话术开场白
  • 微信建设网站找哪家/今日国际军事新闻头条
  • html5官方网站开发流程/广告投放的方式有哪些
  • 国内知名网站制作公司/宁波seo网络推广渠道介绍
  • 秦皇岛网站制作小程序开发/徐州做网站的公司
  • 自己给自己网站做推广/百度收录量
  • 网站空间域名续费/网址域名
  • 邹城哪个公司做网站好/百度推广竞价
  • 郑州定制网站建设/网络平台宣传方式有哪些
  • 织梦个人网站模板/百度seo咋做
  • 泉州pc网站开发/百度指数查询app
  • 注册网站合集/电商网站项目
  • 南乐网站建设电话/百度网站优化方案
  • 电商网站建设商业计划书/seo优化步骤