Python使用Lambda进行Sorted排序功能真是强大

已收录   阅读次数: 539
2021-01-1908:10:00 发表评论
摘要

Python的排序有两种,sort()和sorted(),简单排序直接运用这两个已经构建好的排序函数就可以了,但是,如果想排序更为复杂的函数的话,则需要运用Lambda了,可以让排序更加灵活,本篇文章结合几个例子来体会一下它的强大……

分享至:
Python使用Lambda进行Sorted排序功能真是强大

开篇寄语

Python的排序有两种,sort()和sorted(),简单排序直接运用这两个已经构建好的排序函数就可以了,但是,如果想排序更为复杂的函数的话,则需要运用Lambda了,可以让排序更加灵活,本篇文章结合几个例子来体会一下它的强大。

内容详情

先以一个实例来看一下如何使用Python的排序。

a = [10, 2, 3, 4, 5]
sorted(a)
#输出结果为[2, 3, 4, 5, 10]

感觉是不是比较简单,那接下来学习一个复杂一些的,试想一个list是这样的:

b = ['1zp', '34dfwe', '54fg', 'a462d', 'abc']

如果想按照每个元素的第二个位置排序,那么该如何操作呢?这时候就需要用到Lambda了,构造如下:

sorted(b, key=lambda x:x[1])
#输出结果为:['34dfwe', '54fg', 'a462d', 'abc', '1zp']

如果想按照每个元素的第三个位置排序,那么该如何操作呢?构造如下:

sorted(b, key=lambda x:x[2])
#输出结果为:['a462d', 'abc', '34dfwe', '54fg', '1zp']

上面的例子如果是让其倒序呢?构造如下:

sorted(b, key=lambda x:x[2], reverse=True)
#输出结果为:['1zp', '54fg', '34dfwe', 'abc', 'a462d']

继续加大难度,如果是排序按照两个或者两个以上条件该如何操作呢?构造如下:

sorted(b, key=lambda x:(len(x),x[2],x[0]))
#输出结果为:['abc', '1zp', '54fg', 'a462d', '34dfwe']

什么意思呢?即先按照长度排序,接着是按照第三个元素排序,再接着按照第一个元素排序。

继续,加大难度,如果是排序key和value这种字典,该如何使用呢?

d = {'apple': 2, 'banana': 3, 'almond':2 , 'beetroot': 3, 'peach': 4}
sorted(d.items(), key=lambda v: v[1])
#输出结果为[('apple', 2), ('almond', 2), ('banana', 3), ('beetroot', 3), ('peach', 4)]
sorted(d.items(), key=lambda v: v[0])
#输出结果为[('almond', 2), ('apple', 2), ('banana', 3), ('beetroot', 3), ('peach', 4)]

经过以上的内容,已经了解了Lambda再排序上的妙用,但是lambda不仅在排序上起到非常大的作用,还有更多应用场景会用到,这些也将在后续的文章中继续探讨。

  • 我的微信
  • 微信扫一扫加好友
  • weinxin
  • 我的微信公众号
  • 扫描关注公众号
  • weinxin

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: