摘要:解釋就相當(dāng)于把每個(gè)序列元素的每一個(gè)多帶帶用一個(gè)管道函數(shù)處理,再把他們按順序組合成一個(gè)新可迭代對(duì)象注意這個(gè)管道函數(shù)只能是單參數(shù)函數(shù),如果想傳遞多個(gè)參數(shù)怎么辦使用偏函數(shù)怕有些人看不懂,這里就不用了,而是用普通函數(shù)定義方式固定值固定值固定值固定值固
map
In [25]: list(map(lambda a:a**2, [1,2,3,4])) Out[25]: [1, 4, 9, 16] 解釋:map就相當(dāng)于 把每個(gè)序列元素 的每一個(gè) 多帶帶用一個(gè)管道函數(shù)處理, 再把他們按順序組合成一個(gè)新可迭代對(duì)象 注意:這個(gè)管道函數(shù) 只能是單參數(shù)函數(shù),如果想傳遞多個(gè)參數(shù)怎么辦??? 1. 使用偏函數(shù) paitial (怕有些人看不懂,這里就不用lambda了,而是用普通函數(shù)定義方式) In [58]: def f(a,b): ...: return a**2,b In [59]: f = partial(f,b="固定值") In [60]: list(map(f,[1,2,3,4])) Out[60]: [(1, "固定值"), (4, "固定值"), (9, "固定值"), (16, "固定值")] 當(dāng)然還是提供一下lambda的方式吧,看看有多簡(jiǎn)潔。 In [64]: list(map(partial(lambda a,b:(a**2,b),b="固定值") ,[1,2,3,4])) Out[64]: [(1, "固定值"), (4, "固定值"), (9, "固定值"), (16, "固定值")] 2. 如果想對(duì)map傳遞多個(gè)參數(shù),除了上面用偏函數(shù),還可以使用下面介紹的starmap map多參應(yīng)用場(chǎng)景:進(jìn)程池的imap (以后我也會(huì)寫Python三器三程的文章)starmap
In [30]: list(starmap(lambda a,b:a+b,( (1,2),(3,4)))) Out[30]: [3, 7] 解釋一下: starmap 和 partial雖然都可以解決 map傳多參,但還是有一些區(qū)別的 starmap的 每一對(duì)的多個(gè)參數(shù) 都是密切相關(guān)的 partial的 偏參數(shù) 是和所有 主參數(shù) 全部相關(guān)的reduce
In [87]: from functools import reduce In [88]: reduce(lambda a,b:a*b, [1,2,3,4]) Out[88]: 24 解釋一下:reduce 相當(dāng)于對(duì)一個(gè)序列"累"的操作 (累加、累乘等),返回結(jié)果就是累值filter
In [100]: list(filter(lambda a:a if a>2 else None, [1,2,3,4])) Out[100]: [3, 4] 解釋一下:和map思想一樣,根據(jù)條件過(guò)濾序列。sorted
In [128]: dict1 = {"學(xué)號(hào)2":"1","學(xué)號(hào)1":"2"} In [129]: sorted(dict1.items(),key=lambda x:x[1]) Out[129]: [("學(xué)號(hào)2", "1"), ("學(xué)號(hào)1", "2")] 解釋一下:和list的sort函數(shù)類似, 但這個(gè)sorted的優(yōu)點(diǎn)是針可以對(duì)所有序列排序zip
In [132]: list(zip((1,2),(3,4,5))) Out[132]: [(1, 3), (2, 4)] 解釋一下:每個(gè)子序列對(duì)應(yīng)位置進(jìn)行組合, 如果格式不匹配,則會(huì)舍棄不匹配的那一項(xiàng)三目運(yùn)算
三目運(yùn)算符可以使代碼簡(jiǎn)介邏輯清晰(雖然 or and 也是可以使代碼邏輯簡(jiǎn)潔,但有些燒腦,我?guī)缀醪挥脋~) In [78]: print(1 if 0==0 else 2) Out[78]: 1推導(dǎo)式
其實(shí)有時(shí)用推導(dǎo)式也可以代替部分高階操作,并且推導(dǎo)式的效率也高 1. 列表推導(dǎo)式 In [77]: [1 for _ in range(5) if 1==1] Out[77]: [1, 1, 1, 1, 1] 2. 集合推導(dǎo)式 In [6]: {x for x in [1,2,1,2]} Out[6]: {1, 2} 3. 字典推導(dǎo)式 In [18]: {value:key for key,value in {"name":"tom"}.items()} Out[18]: {"tom": "name"} 4. 生成器 (生成器還有另外的方式,后面還會(huì)三程三器) In [23]: (x for x in range(10)) Out[23]:at 0x0000024A4CFA8BA0>
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/43835.html
摘要:不要疑惑,告訴你答案這個(gè)代表正負(fù)號(hào)的正。雖然一點(diǎn)技術(shù)含量沒(méi)有,但是你要懂序列也許叫可迭代對(duì)象更為合適,但是我喜歡叫序列。 數(shù)據(jù)結(jié)構(gòu) 可變類型與不可變類型(重頭戲) 基操: 可變類型:[], {} # 可增刪改 查 不可變類型: int float str () # 無(wú)法增刪改, 只可查 升操: + 與...
摘要:多線程對(duì)于爬蟲方面也可以表現(xiàn)出較好的性能。計(jì)算密集型就別想多線程了,一律多進(jìn)程。所以同一時(shí)刻最大的并行線程數(shù)進(jìn)程數(shù)的核數(shù)這條我的個(gè)人理解很模糊,參考吧多線程多線程有種通過(guò)的那種方式,非常普遍,此處就不寫了。 GIL的理解 GIL這個(gè)話題至今也是個(gè)爭(zhēng)議較多的,對(duì)于不用應(yīng)用場(chǎng)景對(duì)線程的需求也就不同,說(shuō)下我聽(tīng)過(guò)的優(yōu)點(diǎn): 1. 我沒(méi)有用過(guò)其他語(yǔ)言的多線程,所以無(wú)法比較什么,但是對(duì)于I/O而言,...
摘要:?jiǎn)卧卦孢@是整數(shù)這才是元祖也許這兩行,你們當(dāng)時(shí)疑惑過(guò),并且現(xiàn)在也都知道了,當(dāng)然重點(diǎn)并不在這里。。雖然我水平很垃圾,但是我知道匿名函數(shù)有一種執(zhí)行方式叫做自執(zhí)行。看吧,這就是版的匿名函數(shù)自執(zhí)行方法。 單元素元祖: a = (1) # 這是整數(shù)1 a = (1,) # 這才是元祖 也許這兩行,你們當(dāng)時(shí)疑惑過(guò),并且現(xiàn)在也都知道了,當(dāng)然重點(diǎn)并不在這里。。 我無(wú)聊的時(shí)候想過(guò),為什么單...
摘要:類的繼承類繼承有三種調(diào)用方式,其實(shí)是有區(qū)別的,聽(tīng)我慢慢道來(lái)第一種父類方法參數(shù)直接調(diào)用第二種方法參數(shù)直接調(diào)用在誰(shuí)的類下調(diào)用,就找此類對(duì)應(yīng)的下一個(gè)就是要繼承的第三種方法參數(shù)找類名對(duì)應(yīng)的的下一個(gè),就是繼承的,一般寫本身的類名上下文管理器上下文管理 類的繼承 類繼承有三種調(diào)用方式,其實(shí)是 有區(qū)別 的,聽(tīng)我慢慢道來(lái) class A: def say(self, name): ...
摘要:也就是給原函數(shù)加個(gè)外殼。類裝飾填充了啊我是原函數(shù)類裝飾填充了啊我是原函數(shù)說(shuō)明后面關(guān)于類的裝飾器如果理解困難當(dāng)做了解即可,用的也少。 可迭代對(duì)象、生成器、迭代器三者的關(guān)系 1. 迭代器一定是可迭代對(duì)象 2. 生成器是迭代器的一種 3. 可迭代對(duì)象:必須實(shí)現(xiàn) __iter__方法 4. 迭代器:必須實(shí)現(xiàn) __iter__方法 和 __next__ 方法 5. 生成器:必須實(shí)現(xiàn) __it...
閱讀 1295·2021-10-08 10:04
閱讀 1922·2021-09-04 16:40
閱讀 2536·2019-08-30 13:21
閱讀 2280·2019-08-29 15:10
閱讀 2848·2019-08-29 12:35
閱讀 1189·2019-08-26 17:41
閱讀 3062·2019-08-26 17:03
閱讀 1136·2019-08-26 12:01