python lambda表達(dá)式在sort函數(shù)中的使用詳解
1.lambda表達(dá)式一般用法
語(yǔ)法:
lamda argument:expression
example:
add = lambda x, y: x+y print(add(10, 20))<br data-filtered="filtered">>>> 30
2.lambda表達(dá)式在sort函數(shù)中的使用
假如a是一個(gè)由元組構(gòu)成的列表,對(duì)該列表進(jìn)行排序時(shí),我們需要用到參數(shù)key,也就是關(guān)鍵詞,如下面代碼所示,lambda是一個(gè)匿名函數(shù),是固定寫(xiě)法;x表示匿名函數(shù)的輸入,即列表中的一個(gè)元素,在這里,表示一個(gè)元組,x只是臨時(shí)起的一個(gè)名字,你可以使用任意的名字;x[0]表示匿名函數(shù)的輸出,即元組里的第一個(gè)元素,即key = x[0];所以這句命令的意思就是按照列表中第一個(gè)元素進(jìn)行排序。
a = [('b', 4), ('a', 12), ('d', 7), ('h', 6), ('j', 3)]
a.sort(key=lambda x: x[0])
print(a)<br data-filtered="filtered">>>>[('a', 12), ('b', 4), ('d', 7), ('h', 6), ('j', 3)]
3.舉例,leetcode中的一道題
937.重新排列日志
你有一個(gè)日志數(shù)組 logs。每條日志都是以空格分隔的字串。
對(duì)于每條日志,其第一個(gè)字為字母數(shù)字標(biāo)識(shí)符。然后,要么:
標(biāo)識(shí)符后面的每個(gè)字將僅由小寫(xiě)字母組成,或;
標(biāo)識(shí)符后面的每個(gè)字將僅由數(shù)字組成。
我們將這兩種日志分別稱為字母日志和數(shù)字日志。保證每個(gè)日志在其標(biāo)識(shí)符后面至少有一個(gè)字。
將日志重新排序,使得所有字母日志都排在數(shù)字日志之前。字母日志按內(nèi)容字母順序排序,忽略標(biāo)識(shí)符;在內(nèi)容相同時(shí),按標(biāo)識(shí)符排序。數(shù)字日志應(yīng)該按原來(lái)的順序排列。
返回日志的最終順序。
示例 :
輸入:["a1 9 2 3 1","g1 act car","zo4 4 7","ab1 off key dog","a8 act zoo"]
輸出:["g1 act car","a8 act zoo","ab1 off key dog","a1 9 2 3 1","zo4 4 7"]
思路:先將日志數(shù)組logs分成兩個(gè)日志數(shù)組,一個(gè)存儲(chǔ)字母日志,一個(gè)存儲(chǔ)數(shù)字日志,根據(jù)題意,需將所有字母日志排在數(shù)字日志前面,字母日志按內(nèi)容字母排序,故僅需對(duì)字母日志數(shù)組排序,最后返回兩個(gè)數(shù)組想家的結(jié)果就OK了。
代碼如下:
class Solution(object):
def reorderLogFiles(self, logs):
"""
:type logs: List[str]
:rtype: List[str]
"""
l1=[]
l2=[]
for l in logs:
if l[-1].isalpha():
l1.append(l)
else:
l2.append(l)
l1.sort(key=lambda x:(x[x.index(' ')+1:],x[:x.index(' ')]))
return l1+l2
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Django 允許局域網(wǎng)中的機(jī)器訪問(wèn)你的主機(jī)操作
這篇文章主要介紹了Django 允許局域網(wǎng)中的機(jī)器訪問(wèn)你的主機(jī)實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-05-05
基于Python實(shí)現(xiàn)自制CV剪貼板功能
云桌面的win10不能調(diào)出剪貼板,對(duì)于CV工程師來(lái)說(shuō)十分不方便,所以這篇文章主要介紹了如何使用Python實(shí)現(xiàn)一個(gè)CV剪貼板,提升常用語(yǔ)句的復(fù)制粘貼效率,感興趣的可以了解下2024-02-02
PyQt5 QSerialPort子線程操作的實(shí)現(xiàn)
這篇文章主要介紹了PyQt5 QSerialPort子線程操作的實(shí)現(xiàn),小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-04-04
Python?庫(kù)?PySimpleGUI?制作自動(dòng)化辦公小軟件的方法
Python?在運(yùn)維和辦公自動(dòng)化中扮演著重要的角色,PySimpleGUI?是一款很棒的自動(dòng)化輔助模塊,讓你更輕松的實(shí)現(xiàn)日常任務(wù)的自動(dòng)化,下面通過(guò)本文給大家介紹下Python?庫(kù)?PySimpleGUI?制作自動(dòng)化辦公小軟件的過(guò)程,一起看看吧2021-12-12
Python中OpenCV?Tutorials?20??高動(dòng)態(tài)范圍成像的實(shí)現(xiàn)步驟
這篇文章主要介紹了OpenCV?Tutorials?20?-?高動(dòng)態(tài)范圍成像,本文還給大家展示了一種稱為曝光融合的替代方法,它可以產(chǎn)生低動(dòng)態(tài)范圍的圖像,需要的朋友可以參考下2022-06-06
基于Python實(shí)現(xiàn)自動(dòng)化文檔整理工具
一個(gè)人可能會(huì)在計(jì)算機(jī)上存儲(chǔ)大量的照片、視頻和文檔文件,這些文件可能散落在不同的文件夾中,難以管理和查找。所以本文就來(lái)用Python制作一個(gè)自動(dòng)化文檔整理工具吧2023-04-04
關(guān)于反爬蟲(chóng)的一些簡(jiǎn)單總結(jié)
這篇文章主要介紹了關(guān)于反爬蟲(chóng)的一些簡(jiǎn)單總結(jié),具有一定借鑒價(jià)值,需要的朋友可以參考下。2017-12-12

