开篇寄语
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不仅在排序上起到非常大的作用,还有更多应用场景会用到,这些也将在后续的文章中继续探讨。
ArrayArrayArray- 我的微信
- 微信扫一扫加好友
- 我的微信公众号
- 扫描关注公众号