日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > python >内容正文

python

10个你必须知道的Python内置函数

發(fā)布時(shí)間:2024/9/15 python 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 10个你必须知道的Python内置函数 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

自從把精力投入到次冪數(shù)據(jù)(www.cimidata.com) 這個(gè)產(chǎn)品后,貌似很久很久沒有寫過原創(chuàng)文章了,人一旦懶起來也會(huì)形成習(xí)慣,反之亦然。一個(gè)目標(biāo)之所以難以堅(jiān)持,很大可能是太大了。

在我們的一個(gè)跑步群里,每周5公里這件事,我們已經(jīng)堅(jiān)持了100天。如果歡成每天5公里,我相信你很快會(huì)放棄的。而每周5公里,7天內(nèi)任意一天完成就算達(dá)成目標(biāo),所以一直堅(jiān)持著,甚至還能超額完成。

以后決定堅(jiān)持一周至少產(chǎn)出一到篇原創(chuàng)出來。來,互相監(jiān)督

1. reduce()

reduce() 是 functools 模塊下面的一個(gè)函數(shù),接收兩個(gè)參數(shù),一個(gè)是函數(shù)對(duì)象,一個(gè)是可迭代對(duì)象(比如list), reduce每次會(huì)把迭代對(duì)象中的下一個(gè)元素作用在函數(shù)上做累積計(jì)算,最后得到一個(gè)值。

來看個(gè)例子你就明白

#?創(chuàng)建函數(shù) def?add(a,?b):result?=?a?+?bprint(f"{a}?+?{b}?=?{result}")return?resultfrom?functools?import?reduceresult?=?reduce(add,?[1,?2,?3,?4]) print("結(jié)果:",?result)

輸出

1?+?2?=?3 3?+?3?=?6 6?+?4?=?10 結(jié)果:?10

執(zhí)行過程:第一次將列表中的前兩個(gè)數(shù)取出來作為函數(shù)add的參數(shù),第二次將上一次函數(shù)add的返回值與列表的第3個(gè)數(shù)作為參數(shù),依此類推,最后得到一個(gè)值。這就是reduce的作用。有點(diǎn)像萬物歸一的感覺。

當(dāng)然,如果只是計(jì)算列表中的元素之和,大可不必繞這么大彎子用reduce來處理,直接用 sum 函數(shù)就可以解決。

result?=?sum([1,?2,?3,?4])

如果是計(jì)算列表中元素的乘積,python并沒有內(nèi)置的函數(shù)直接計(jì)算,這時(shí)候我們可以借用reduce來處理

def?mul(a,?b):return?a?*?bresult?=?reduce(mul,?[1,?2,?3,?4]) print("結(jié)果:",?result)

輸出

結(jié)果:?24

或者使用 lambda 匿名函數(shù)

result?=?reduce(lambda?a,?b:?a?*?b,?[1,?2,?3,?4])

甚至可以直接使用operator模塊下的乘法操作符函數(shù)

from?operator?import?mul result?=?reduce(mul,?[1,?2,?3,?4]) print("結(jié)果:",?result)

最后你會(huì)發(fā)現(xiàn)解法其實(shí)很多種,不過我們應(yīng)該記住python之禪里面那句話:

There should be one-- and preferably only one --obvious way to do it.

用最合適的方式去做一件事

2. split()

split 接收一個(gè)參數(shù),用于將字符串切割成列表,比如一段英文字符串按照空格切割就可以統(tǒng)計(jì)出單詞的個(gè)數(shù),

words?=?"python?is?the?best?programming?language" words?=?words.split("?") print(words)

輸出

['column1',?'column2',?'column3']

3. enumerate()

enumerate 函數(shù)用于迭代列表等可迭代對(duì)象,它的使用場(chǎng)景一般出現(xiàn)在你需要獲取列表的下標(biāo)位置時(shí),我們知道直接用for循環(huán)去迭代列表時(shí),是拿不到元素下標(biāo)位置的,而 enumerate 就可以獲取,否則你還得自己去定義一個(gè)索引變量。

words?=?['python',?'is',?'the',?'best',?'programming',?'language'] index?=?0 for?w?in?words:print(index,?w)index?+=?10?python 1?is 2?the 3?best 4?programming 5?language

使用 enumerate 函數(shù),處理起來就更優(yōu)雅了

for?index,?w?in?enumerate(words):print(index,?w)0?python 1?is 2?the 3?best 4?programming 5?language

4. map()

map是一個(gè)與reduce函數(shù)對(duì)應(yīng)的函數(shù),Google的map/reduce框架的思想其實(shí)就是從這兩個(gè)函數(shù)借鑒而來的。map函數(shù)用于把一個(gè)列表通過函數(shù)處理,映射成一個(gè)新的列表。例如給列表的每個(gè)元素做平方,將列表元素轉(zhuǎn)換成字符串,得到一個(gè)新的列表。

result?=?map(lambda?x:?str(x),?[1,?2,?3,?4]) print(list(result)) result?=?map(lambda?x:?x?*?x,?[1,?2,?3,?4])) print(list(result))

輸出:

['1',?'2',?'3',?'4'] [1,?4,?9,?16]

此外,map 函數(shù)還可以接受多個(gè)列表參數(shù),使得多個(gè)列表合并為一個(gè)列表成為可能,例如,將兩個(gè)列表相同位置的元素相加得到一個(gè)新的列表

def?merge(x,?y):return?x?+?yresult?=?map(merge,?[1,?2,?3],?[3,?2,?1]) print(list(result))

輸出

[4,?4,?4]

5. getattr()

getattr() 返回對(duì)象屬性對(duì)應(yīng)的值,接受兩個(gè)參數(shù),第一個(gè)是對(duì)象,第二個(gè)是屬性名,這個(gè)函數(shù)通常用戶動(dòng)態(tài)或者某個(gè)對(duì)象下面的某些屬性的值,看例子:

class?Foo:def?__init__(self):self.a?=?10foo?=?Foo()a?=?getattr(foo,?"a") print(a)

輸出

10

你可能會(huì)問,我直接 foo.a 不就可以獲取a屬性的值了嗎?正常情況是這樣沒錯(cuò),如果是你在不知道什么情況下要獲取什么屬性的值時(shí),這時(shí)候getattr就可以派上用場(chǎng)了。初學(xué)者可能還體驗(yàn)不到,當(dāng)你嘗試去寫些框架級(jí)的代碼時(shí),你要想起來有這樣的函數(shù)可以使用就行。

6. slice

slice 是一個(gè)切片函數(shù),切片操作你可能使用過,通過切片來獲取列表的子集, 例如:

s?=?[1,2,3,4] >>>?s[1:3]??#?獲取列表s中第1到第3之間的元素組成的子列表

"1:3" 其就是 就是 slice(1:3) 函數(shù)的縮寫方式,前者就像是語法糖

s?=?[1,?2,?3,?4] print(s[slice(1,?3)])

通常實(shí)際應(yīng)用過程中,直接用語法糖的寫法就可以,沒必要用slice函數(shù)進(jìn)行切片,但是你至少應(yīng)該知道slice是怎么用的。

7. sorted()

sorted 函數(shù)應(yīng)該日常代碼中,算是一個(gè)高頻函數(shù)了,用于將列表等可迭代對(duì)象進(jìn)行排序,它不會(huì)改變?cè)斜淼捻樞?#xff0c;而是返回一個(gè)新的列表。默認(rèn)按照升序排列

nums?=?[4,?5,?6,?3,?1]print(sorted(nums))

輸出

[1,?3,?4,?5,?6]

如果想要降序排列,則需要指定第二個(gè)參數(shù):reverse=True

nums?=?[4,?5,?6,?3,?1] print(sorted(nums,?reverse=True))??#?[6,?5,?4,?3,?1]

sorted 函數(shù)的強(qiáng)大之處遠(yuǎn)不止如此,因?yàn)槟氵€可以自定義排序規(guī)則,比如參與比較是一個(gè)自定義的類Student, 我需要按照Student里面的年齡age進(jìn)行排序,這時(shí)候我們需要自定義排序因子函數(shù)

def?my_sort_key(s):return?s.ageclass?Student:def?__init__(self,?age):self.age?=?agedef?__str__(self):return?f"Student({self.age})"s1?=?Student(12) s2?=?Student(2) s3?=?Student(30)new_list?=?(sorted([s1,?s2,?s3],?key=my_sort_key)) for?i?in?new_list:print(i)

輸出:

Student(2) Student(12) Student(30)

8. format

format 函數(shù)曾經(jīng)字符串格式化最常用的函數(shù),使用也是非常簡(jiǎn)單,但自從f字符串出現(xiàn)之后,format 的功能逐漸被取代,但是3.6之前還是可以常見到該函數(shù)的應(yīng)用場(chǎng)景。

s?=?"{}?is?first?name" print(s.format("liu"))

如果需要占位符比較多搞不清次序的話,可以給每個(gè)占位符一個(gè)名字,這樣就不拍對(duì)不上位置了

s?=?"{first_name}?is?first?name" print(s.format(first_name="liu"))

9. join()

join 也是比較常用的一個(gè)內(nèi)置函數(shù),它可以將列表對(duì)象用指定的字符作為元素之間的連接,轉(zhuǎn)換為字符串。

words?=?['python',?'is',?'the',?'best',?'programming',?'language']print("?".join(words))?#?用空格連接?python?is?the?best?programming?language

10. type

type 我認(rèn)為是python最難理解的一個(gè)內(nèi)置函數(shù)了,新手可能以為type就是一個(gè)用來查看某個(gè)對(duì)象的類型是什么,例如:

print(type(10))?#?<class?'int'> print(type([]))?#?<class?'list'> print(type("s"))#??<class?'str'>

它的另一個(gè)作用是可以用type來創(chuàng)建類,一般情況下,我們都用關(guān)鍵字 class 來定義一個(gè)類,而type也可以用來創(chuàng)建類

>>>?Person?=?type("Person",?(),?{"live":True}) >>>?Person <class?'__main__.Person'>

第一個(gè)參數(shù) Person是類的名字, 第二個(gè)參數(shù)用來指定父類是誰, 第三個(gè)參數(shù)是這個(gè)類的類屬性有哪些。上面這段代碼等價(jià)于:

>>>?class?Person: ...?????live?=?True ... >>>?Person <class?'__main__.Person'>

創(chuàng)建Person這類的type函數(shù)其實(shí)是一個(gè)叫“元類”的東西。而關(guān)于元類甚至可以話一整篇文章來講解了,好在我在之前的文章中有介紹過,感興趣的可以查看一下之前寫的一篇叫什么是 Python 元類這篇文章。元類在寫一些框架時(shí)用的較多,比如你去按sqlalchemy的源碼的時(shí)候,你會(huì)發(fā)現(xiàn)有大量使用元類的場(chǎng)景。

推薦閱讀

牛逼!Python常用數(shù)據(jù)類型的基本操作(長(zhǎng)文系列第①篇)

牛逼!Python的判斷、循環(huán)和各種表達(dá)式(長(zhǎng)文系列第②篇)

牛逼!Python函數(shù)和文件操作(長(zhǎng)文系列第③篇)

牛逼!Python錯(cuò)誤、異常和模塊(長(zhǎng)文系列第④篇)

總結(jié)

以上是生活随笔為你收集整理的10个你必须知道的Python内置函数的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: re久久| 午夜福利理论片在线观看 | 亚洲天堂123| 国产成人亚洲精品 | 国产精品青青草 | 成人激情视频在线播放 | 美女扒逼 | 四虎最新站名点击进入 | 超碰中文字幕在线 | 麻豆免费观看网站 | 老熟妇高潮一区二区高清视频 | wwwxxx日本| 日韩精品久久久久久久酒店 | 国产男男chinese网站 | 日本va欧美va欧美va精品 | 正在播放经典国语对白 | 成人一级免费视频 | 欧美国产高清 | 麻豆一区二区 | 色屁屁草草影院ccyycom | 红桃一区二区三区 | 成人一区二区在线 | 日本网站在线看 | 日本在线一级 | 欧美一区二区人人喊爽 | 日本动漫艳母 | 国产香蕉视频在线播放 | 日韩欧美不卡在线 | 狠狠干狠狠操视频 | 日韩av在线中文字幕 | 国产欧美日韩综合 | 麻豆影视在线观看 | 毛片a级片 | 高潮网| 黄色片子免费 | 91青青视频 | 午夜久久乐 | 日韩福利电影在线观看 | 大尺度做爰呻吟舌吻情头 | 欧美videossex另类 | 欧美 亚洲 另类 激情 另类 | 天天干夜夜爽 | 国产伦子伦对白视频 | 久久国产黄色片 | 精品无码人妻一区二区三 | 国产在线精 | 在线观看视频亚洲 | 东北少妇不戴套对白第一次 | 欧美色涩在线第一页 | 久久久99国产精品免费 | 日韩欧美色图 | 亚洲人成人无码网www国产 | 精品久久久久国产 | 奇米网在线观看 | 我不卡一区二区 | 欧美性色黄 | 野花国产精品入口 | 澳门黄色| 操丰满女人| 日韩午夜免费视频 | 可以免费看污视频的网站 | 午夜精品一区二区三区在线播放 | 精品成人免费一区二区在线播放 | 成人毛片在线观看 | 午夜小视频在线播放 | 天堂8在线 | 欧美xxxx免费虐 | 久草高清视频 | 极品色av | 日韩爱爱爱 | 亚洲成人av电影 | 久久久久成人精品免费播放动漫 | 捆绑少妇玩各种sm调教 | 影音先锋资源av | 80日本xxxxxxxxx96| 日本亚洲色大成网站www久久 | 天天夜夜久久 | 日韩一区在线观看视频 | 国产良妇出轨视频在线观看 | 最新欧美大片 | 欧美区日韩区 | 亚洲欧美自偷自拍 | 欧美一级在线观看视频 | 香蕉国产精品视频 | 亚洲 国产 日韩 欧美 | 美女交配 | 亚洲成人播放 | 最近中文字幕免费 | 日韩有码在线观看 | 尤物视频在线观看免费 | 精品热| 在线看片你懂得 | 天天干天天玩 | 日韩精品一区二区电影 | 黄色成人在线 | 亚欧美一区二区三区 | 亚洲黄色免费观看 | 69亚洲精品久久久蜜桃小说 | www.youjizz.com久久|