真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

python中很酷的函數(shù) 好玩又簡(jiǎn)單的python函數(shù)代碼

推薦 8 個(gè)炫酷的 Python 裝飾器

1、 lru_cache

成都創(chuàng)新互聯(lián)公司長(zhǎng)期為上1000家客戶(hù)提供的網(wǎng)站建設(shè)服務(wù),團(tuán)隊(duì)從業(yè)經(jīng)驗(yàn)10年,關(guān)注不同地域、不同群體,并針對(duì)不同對(duì)象提供差異化的產(chǎn)品和服務(wù);打造開(kāi)放共贏平臺(tái),與合作伙伴共同營(yíng)造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為四子王企業(yè)提供專(zhuān)業(yè)的成都做網(wǎng)站、成都網(wǎng)站建設(shè)、成都外貿(mào)網(wǎng)站建設(shè)四子王網(wǎng)站改版等技術(shù)服務(wù)。擁有十余年豐富建站經(jīng)驗(yàn)和眾多成功案例,為您定制開(kāi)發(fā)。

這個(gè)裝飾器來(lái)自functools模塊。該模塊包含在標(biāo)準(zhǔn)庫(kù)中,非常易于使用。它還包含比這個(gè)裝飾器更酷的功能,但這個(gè)裝飾器是非常受人喜歡的。此裝飾器可用于使用緩存加速函數(shù)的連續(xù)運(yùn)行。當(dāng)然,這應(yīng)該在使用時(shí)記住一些關(guān)于緩存的注意事項(xiàng),但在通用使用情況下,大多數(shù)時(shí)候這個(gè)裝飾器都是值得使用的。

2、JIT

JIT是即時(shí)編譯的縮寫(xiě)。通常每當(dāng)我們?cè)赑ython中運(yùn)行一些代碼時(shí),發(fā)生的第一件事就是編譯。這種編譯會(huì)產(chǎn)生一些開(kāi)銷(xiāo),因?yàn)轭?lèi)型被分配了內(nèi)存,并存儲(chǔ)為未分配但已命名的別名,使用即時(shí)編譯,我們?cè)趫?zhí)行時(shí)才進(jìn)行編譯。

在很多方面,我們可以將其視為類(lèi)似于并行計(jì)算的東西,其中Python解釋器同時(shí)處理兩件事以節(jié)省時(shí)間。Numba JTI編譯器因?qū)⑦@一概念提到Python中而聞名,可以非常輕松地調(diào)用此裝飾器,并立即提高代碼的性能。Numba包提供了JIT裝飾器,它使運(yùn)行更密集的軟件變得更加容易,而不必進(jìn)入C。

3、do_twice

do_twice裝飾器的功能與它的名字差不多。此裝飾器可用于通過(guò)一次調(diào)用運(yùn)行兩次函數(shù),對(duì)調(diào)試特別有用。它可以用于測(cè)量?jī)蓚€(gè)不同迭代的功能。

4、count_calls

count_calls裝飾器可用于提供有關(guān)函數(shù)在軟件中使用多少次的信息。與do_twice一樣,對(duì)調(diào)試也特別有用。

5、dataclass

為了節(jié)省編寫(xiě)類(lèi)的時(shí)間,推薦使用dataclass裝飾器。這個(gè)裝飾器可用于快速編寫(xiě)類(lèi)中常見(jiàn)的標(biāo)準(zhǔn)方法,這些方法通常會(huì)在我們編寫(xiě)的類(lèi)中找到。

6、singleton

singleton是一個(gè)單例裝飾器。通常,單例裝飾器是由用戶(hù)自己編寫(xiě)的,實(shí)際上并不是導(dǎo)入的。

7、use_unit

在科學(xué)計(jì)算中經(jīng)常派上用場(chǎng)的一種裝飾器是use_unit裝飾器。此裝飾器可用于更改返回結(jié)果的表示單位。這對(duì)于那些不想在數(shù)據(jù)中添加度量單位但仍希望人們知道這些單位是什么的人很有用。這個(gè)裝飾器可不是在任何模塊中真正有用,但它是非常常見(jiàn)的,對(duì)科學(xué)應(yīng)用程序非常有用。

python中提供的數(shù)據(jù)類(lèi)型轉(zhuǎn)換函數(shù)有哪些,作用是什么?

作用就是把合理的數(shù)據(jù)轉(zhuǎn)換為需要的類(lèi)型。int()整數(shù),float()浮點(diǎn)數(shù),str()字符串,list()列表,tuple()元組,set()集合……

比如a='12'這個(gè)是字符串類(lèi)型,用int函數(shù)a=int(a)這時(shí)變量a就是整型,字符串'12'變?yōu)榱苏麛?shù)12。Python沒(méi)有變量聲明的要求,變量的屬性在賦值時(shí)確定,這樣變量的類(lèi)型就很靈活。

有一種題目判斷一個(gè)整數(shù)是否回文數(shù),用字符串來(lái)處理就很簡(jiǎn)單

a=1234321#整數(shù)

if str(a)==str(a)[::-1]:#借助字符串反轉(zhuǎn)比較就可以確定是否回文數(shù)。

還比如元組b=(1,3,2,4),元組是不可以更新刪除排序成員的,但是列表是可以的,通過(guò)列表函數(shù)進(jìn)行轉(zhuǎn)換來(lái)實(shí)現(xiàn)元組的更新刪除和排序。

b=(1,3,2,4)

b=list(b)

b.sort()

b=tuple(b)

這時(shí)得到的元組b就是一個(gè)升序的元組(1,2,3,4)

再比如你要輸入創(chuàng)建整數(shù)列表或者整數(shù)元組基本上寫(xiě)法相同,就是用對(duì)應(yīng)的函數(shù)來(lái)最后處理。

ls=list(map(int,input().split()))#這個(gè)就是列表

tup=tuple(map(int,input().split()))#這個(gè)就是元組

再比如有個(gè)叫集合的,集合有唯一性,可以方便用來(lái)去重。

ls=[1,2,3,1,2,3,1,2,3]

ls=list(set(ls))#通過(guò)set()去重后,現(xiàn)在的ls里就是[1,2,3]去重后的列表。

Python中幾個(gè)特殊的函數(shù)

1、 定義一個(gè)特殊的 __slots__ 變量,來(lái)限制該class實(shí)例能添加的屬性

2、 內(nèi)置的 @property(關(guān)鍵字) 裝飾器就是負(fù)責(zé)把一個(gè)方法變成屬性調(diào)用的。@property.setter(這里的property是類(lèi)里面的屬性名)負(fù)責(zé)把一個(gè)setter方法變成屬性賦值。

3、 __str__(),__repr__(),__iter__(),__next__(),__getitem__(),__setitem__(),__delitem__(),__getattr__(),__call__()

python中的冷()函數(shù)的作用是()

python中的eval函數(shù) 原創(chuàng)

2019-12-29 19:51:43

難得 yx

碼齡3年

關(guān)注

文章目錄

eval函數(shù)是什么

字符串轉(zhuǎn)換成列表

字符串轉(zhuǎn)換成字典

字符串轉(zhuǎn)換成元組

eval函數(shù)是什么

eval是Python的一個(gè)內(nèi)置函數(shù),這個(gè)函數(shù)的作用是,返回傳入字符串的表達(dá)式的結(jié)果。

即變量賦值時(shí),等號(hào)右邊的表達(dá)式寫(xiě)成字符串的格式,返回值就是這個(gè)表達(dá)式的結(jié)果。

在這里插入圖片描述

舉例:

在這里插入圖片描述

字符串轉(zhuǎn)換成列表

在這里插入圖片描述

在這里插入圖片描述

字符串轉(zhuǎn)換成字典

在這里插入圖片描述

字符串轉(zhuǎn)換成元組

在這里插入圖片描述

注意:

python與其他語(yǔ)言不一樣的地方之一,就在于它可以計(jì)算字符串的數(shù)值

在這里插入圖片描述

文章知識(shí)點(diǎn)與官方知識(shí)檔案匹配

Python入門(mén)技能樹(shù)基礎(chǔ)語(yǔ)法函數(shù)

211446 人正在系統(tǒng)學(xué)習(xí)中

打開(kāi)CSDN APP,看更多技術(shù)內(nèi)容

eval函數(shù)的作用_夏木炎的博客_eval()函數(shù)的作用是什么?

eval函數(shù)是強(qiáng)大的數(shù)碼轉(zhuǎn)換引擎,字符串經(jīng)eval轉(zhuǎn)換后得到一個(gè)javascript對(duì)象, var a = eval(“5″);等效于var a = 5; var a = eval(“’5′”);等效于var a = ’5′; var obj = eval(“({name:’cat’,color:’black’...

繼續(xù)訪(fǎng)問(wèn)

...的作用_拾憶11的博客_js的eval()函數(shù)的作用是什么?

那么說(shuō)明:eval()函數(shù)動(dòng)態(tài)執(zhí)行的代碼并不會(huì)創(chuàng)建新的作用域,其代碼就是在當(dāng)前的作用域執(zhí)行的。因此也就是說(shuō),eval()函數(shù)也完全可以使用當(dāng)前作用域的this,argument等對(duì)象。 在IE中,支持這樣一種和eval()非常類(lèi)似的函數(shù)叫做:execScript()...

繼續(xù)訪(fǎng)問(wèn)

js中eval()函數(shù)的作用

一、eval() 函數(shù)作用: eval()可以接受一個(gè)字符串str作為參數(shù),并把這個(gè)參數(shù)作為腳本代碼來(lái) 執(zhí)行。 二、接受的參數(shù): (1)如果參數(shù)是一個(gè)表達(dá)式,eval() 函數(shù)將執(zhí)行表達(dá)式; (2) 如果參數(shù)是Javascript語(yǔ)句,eval()將執(zhí)行 Javascript 語(yǔ)句 注:(如果執(zhí)行結(jié)果是一個(gè)值就返回,不是就返回undefined,如果參數(shù)不是一個(gè)字符串,則直接返回該參數(shù)) 三、語(yǔ)法: eval(string)。 四、實(shí)例: eval(“var a=1”);//聲明一個(gè)變量a并賦值1。 eva

繼續(xù)訪(fǎng)問(wèn)

JavaScript中的 eval() 函數(shù)究竟有什么用

之前對(duì)eval()函數(shù)一直有一些疑問(wèn),覺(jué)得沒(méi)什么用,很疑惑為什么設(shè)計(jì)這樣一個(gè)方法,今天來(lái)總結(jié)一下。 1、定義和用法 eval() 函數(shù)可計(jì)算某個(gè)字符串,并執(zhí)行其中的的 JavaScript 代碼。 返回通過(guò)計(jì)算 string 得到的值(如果有的話(huà),無(wú)值返回undefined)。只接受原始字符串作為參數(shù),如果 string 參數(shù)不是原始字符串,那么該方法將不作任何改變地返回。 如

繼續(xù)訪(fǎng)問(wèn)

...的使用詳解_滌生大數(shù)據(jù)的博客_eval()函數(shù)的作用是什么?

eval是Python的一個(gè)內(nèi)置函數(shù),功能十分強(qiáng)大,這個(gè)函數(shù)的作用是,返回傳入字符串的表達(dá)式的結(jié)果。就是說(shuō):將字符串當(dāng)成有效的表達(dá)式 來(lái)求值 并 返回計(jì)算結(jié)果。 eval函數(shù)就是實(shí)現(xiàn)list、dict、tuple與str之間的轉(zhuǎn)化,同樣str函數(shù)把list,dict,tuple...

繼續(xù)訪(fǎng)問(wèn)

Python中eval函數(shù)的作用_小小平不平凡的博客_eval函數(shù)...

如果source是一個(gè)輸出語(yǔ)句,如print(),則eval()返回結(jié)果為None; 除以上2種情況外,source表達(dá)式的結(jié)果就是eval()函數(shù)的返回值 示例 1、 x = 10 def func(): y = 20 #局部變量y a = eval("x+y") print("a:",a) #x沒(méi)...

繼續(xù)訪(fǎng)問(wèn)

最新發(fā)布 Python的內(nèi)置函數(shù)(二十一)、eval()

描述 eval() 函數(shù)用來(lái)執(zhí)行一個(gè)字符串表達(dá)式,并返回表達(dá)式的值。 語(yǔ)法 以下是 eval() 方法的語(yǔ)法: eval(expression[, globals[, locals]]) 參數(shù) expression -- 表達(dá)式。 globals -- 變量作用域,全局命名空間,如果被提供,則必須是一個(gè)字典對(duì)象。 locals -- 變量作用域,局部命名空間,如果被提供,可以是任...

繼續(xù)訪(fǎng)問(wèn)

python中eval()函數(shù)的作用及使用方法

大家好,我是J哥 今天給大家介紹python基礎(chǔ)中eval()函數(shù)的作用: 理解: eval()函數(shù)用來(lái)執(zhí)行一個(gè)字符串表達(dá)式,并返回表達(dá)式的值。 也可以這樣來(lái)理解:eval()函數(shù)就是實(shí)現(xiàn)list、dict、tuple、與str之間的轉(zhuǎn)化 語(yǔ)法: eval(expression[, globals[, locals]]) 參數(shù): expression – 表達(dá)式。 globals – 變量作用域,全局命名空間,如果被提供,則必須是一個(gè)字典對(duì)象。 locals – 變量作用域,局部命名空間,如果被提供

繼續(xù)訪(fǎng)問(wèn)

Python中eval()函數(shù)的使用_W_chuanqi的博客_python eval

eval() 函數(shù)用來(lái)執(zhí)行一個(gè)字符串表達(dá)式,并返回表達(dá)式的值。 語(yǔ)法 eval(expression[, globals[, locals]]) expression – 表達(dá)式。 globals – 變量作用域,全局命名空間,如果被提供,則必須是一個(gè)字典對(duì)象。 locals–變量作用域,局部命名...

繼續(xù)訪(fǎng)問(wèn)

Javascript中eval()函數(shù)的作用_天天向尚6的博客

【eval()函數(shù)】JavaScript有許多小竅門(mén)來(lái)使編程更加容易。其中之一就是eval()函數(shù),這個(gè)函數(shù)可以把一個(gè)字符串當(dāng)作一個(gè)JavaScript表達(dá)式一樣去執(zhí)行它。舉個(gè)小例子:var the_unevaled_answer = "2 + 3";var the_evaled_answer = eval(...

繼續(xù)訪(fǎng)問(wèn)

熱門(mén)推薦 python中的eval函數(shù)的使用詳解

eval是Python的一個(gè)內(nèi)置函數(shù),功能十分強(qiáng)大,這個(gè)函數(shù)的作用是,返回傳入字符串的表達(dá)式的結(jié)果。就是說(shuō):將字符串當(dāng)成有效的表達(dá)式來(lái)求值 并返回計(jì)算結(jié)果。 eval函數(shù)就是實(shí)現(xiàn)list、dict、tuple與str之間的轉(zhuǎn)化,同樣str函數(shù)把list,dict,tuple轉(zhuǎn)為為字符串 1.eval的語(yǔ)法 eval(expression[, globals[, loc...

繼續(xù)訪(fǎng)問(wèn)

eval()函數(shù)的作用

eval()函數(shù)的作用 eval()函數(shù)功能是將某段字符串當(dāng)成JS語(yǔ)句來(lái)執(zhí)行。 eval() 函數(shù)計(jì)算 JavaScript 字符串,并把它作為腳本代碼來(lái)執(zhí)行。 如果參數(shù)是一個(gè)表達(dá)式,eval() 函數(shù)將執(zhí)行表達(dá)式。如果參數(shù)是Javascript語(yǔ)句,eval()將執(zhí)行 Javascript 語(yǔ)句。 var a=eval("12"); //相當(dāng)于 var a=12; var obj = eval("({name:'nick',age:28})"); //相當(dāng)于 var obj = {name:'nick

繼續(xù)訪(fǎng)問(wèn)

Python中eval的強(qiáng)大與危害

eval是Python的一個(gè)內(nèi)置函數(shù),這個(gè)函數(shù)的作用是,返回傳入字符串的表達(dá)式的結(jié)果。想象一下變量賦值時(shí),將等號(hào)右邊的表達(dá)式寫(xiě)成字符串的格式,將這個(gè)字符串作為eval的參數(shù),eval的返回值就是這個(gè)表達(dá)式的結(jié)果。 python中eval函數(shù)的用法十分的靈活,但也十分危險(xiǎn),安全性是其最大的缺點(diǎn)。本文從靈活性和危險(xiǎn)性?xún)煞矫娼榻Beval。 1、強(qiáng)大之處 舉幾個(gè)例子感受一下,字符串與list、tuple、...

繼續(xù)訪(fǎng)問(wèn)

python的eval函數(shù)

1.eval函數(shù)的語(yǔ)法及用法 (1)語(yǔ)法:eval(expression) 參數(shù)說(shuō)明 expression:字符串表達(dá)式,可為算法,也可為input函數(shù)等。 說(shuō)明:表達(dá)式必需是字符串,否則會(huì)報(bào)錯(cuò),比如直接輸入數(shù)值會(huì)報(bào)錯(cuò)為:“TypeError: eval() arg 1 must be a string, bytes or code object”,如下圖所示。 (2)作用:接收運(yùn)行一個(gè)字符串表達(dá)式,返回表達(dá)式的結(jié)果值。 2.實(shí)例 (1)簡(jiǎn)單的計(jì)算用法 例1:求得2+3得值。 e

繼續(xù)訪(fǎng)問(wèn)

Eval函數(shù)知識(shí)總結(jié)

說(shuō)道Json,我們先來(lái)聊聊eval 一、eval是什么?(解析器) eval是一個(gè)函數(shù),看本質(zhì)function eval() { [native code] } 二、怎樣使用eval? 語(yǔ)法:string 必需。要計(jì)算的字符串,其中含有要計(jì)算的 JavaScript 表達(dá)式或要執(zhí)行的語(yǔ)句。通過(guò)計(jì)算 string 得到的值(如果有的話(huà)) 該方法只接受原始字符串作為參數(shù),只接受一個(gè)...

繼續(xù)訪(fǎng)問(wèn)

eval在JS中的作用

form: eval函數(shù)是強(qiáng)大的數(shù)碼轉(zhuǎn)換引擎,字符串經(jīng)eval轉(zhuǎn)換后得到一個(gè)javascript對(duì)象, 舉簡(jiǎn)單例子: var a = eval(“5″);等效于var a = 5; var a = eval(“’5′”);等效于var a = ’5′; var obj = eval(“({name:’cat’,colo...

繼續(xù)訪(fǎng)問(wèn)

Python中eval()函數(shù)的使用

今天給大家分享一下Python中的eval()函數(shù),如果感覺(jué)博主的文章還不錯(cuò)的話(huà),希望大家點(diǎn)贊支持一下博主 文章目錄eval()函數(shù)語(yǔ)法實(shí)例實(shí)例1實(shí)例2實(shí)例3 eval()函數(shù) eval() 函數(shù)用來(lái)執(zhí)行一個(gè)字符串表達(dá)式,并返回表達(dá)式的值。 語(yǔ)法 eval(expression[, globals[, locals]]) expression – 表達(dá)式。 globals – 變量作用域,全局命名空間,如果被提供,則必須是一個(gè)字典對(duì)象。 locals–變量作用域,局部命名空間,如果被提供,可以是任何映

繼續(xù)訪(fǎng)問(wèn)

python中eval函數(shù)作用

1. 字符串轉(zhuǎn)換成列表 2. 字符串轉(zhuǎn)換成字典 3. 字符串轉(zhuǎn)換成元組 4. 將字符串轉(zhuǎn)換成表達(dá)式執(zhí)行 eval函數(shù)就是實(shí)現(xiàn)list、dict、tuple與str之間的轉(zhuǎn)化 str函數(shù)把list,dict,tuple轉(zhuǎn)為為字符串 1. 字符串轉(zhuǎn)換成列表 2. 字符串轉(zhuǎn)換成字典 3. 字符串轉(zhuǎn)換成元組 4. 將字符串轉(zhuǎn)換成表達(dá)式執(zhí)行 eval雖然方便,但是要注意安全性,可以將字符串轉(zhuǎn)成表達(dá)式...

繼續(xù)訪(fǎng)問(wèn)

Python 3 內(nèi)置函數(shù) eval( )

描述: eval( ) 函數(shù)用來(lái)執(zhí)行一個(gè)字符串表達(dá)式,并返回表達(dá)式的值。

繼續(xù)訪(fǎng)問(wèn)

python 中 eval()函數(shù)的作用

eval函數(shù)就是實(shí)現(xiàn)list、dict、tuple與str之間的轉(zhuǎn)化 str函數(shù)把list,dict,tuple轉(zhuǎn)為為字符串 eval(a) str(b)

繼續(xù)訪(fǎng)問(wèn)

eval 是什么

eval 是全局對(duì)象上的一個(gè)函數(shù),會(huì)把傳入的字符串當(dāng)做 JavaScript 代碼執(zhí)行。如果傳入的參數(shù)不是字符串,它會(huì)原封不動(dòng)地將其返回。eval 分為直接調(diào)用和間接調(diào)用兩種,通常間接調(diào)用的性能會(huì)好于直接調(diào)用。 直接調(diào)用時(shí),eval 運(yùn)行于其調(diào)用函數(shù)的作用域下; var context = 'outside'; (function(){ var context = 'inside'; return eval('context'); })(); // return 'inside' ..

繼續(xù)訪(fǎng)問(wèn)

python中eval函數(shù)的作用后悔沒(méi)早知道

在本篇文章里小編給大家整理的是關(guān)于python中eval函數(shù)作用以及實(shí)例代碼,需要的朋友們參考下吧。 eval() 函數(shù)用來(lái)執(zhí)行一個(gè)字符串表達(dá)式,并返回表達(dá)式的值。 eval函數(shù)功能:將字符串str當(dāng)成有效的表達(dá)式來(lái)求值并返回計(jì)算結(jié)果。eval函數(shù)可以實(shí)現(xiàn)list、dict、tuple與str之間的轉(zhuǎn)化 eval() 方法的語(yǔ)法: 1 eval(expression[, global...

繼續(xù)訪(fǎng)問(wèn)

python里的eval是什么

python里的eval()函數(shù)是用來(lái)執(zhí)行一個(gè)字符串表達(dá)式,并返回表達(dá)式的值。 例題:數(shù)值運(yùn)算 描述 獲得用戶(hù)輸入的一個(gè)字符串,格式如下:????????????????????????? M OP N??????????????????????????????????????????????????????? 其中,M和N是任何數(shù)字,OP代表一種操作,表示為如下四種:+, -, *, /(加減乘除)????????????????????????????????????????????? 根據(jù)OP,輸出M

繼續(xù)訪(fǎng)問(wèn)

python3中eval函數(shù)用法簡(jiǎn)介

python中eval函數(shù)的用法十分的靈活,這里主要介紹一下它的原理和一些使用的場(chǎng)合。 下面是從python的官方文檔中的解釋?zhuān)? The arguments are a string and optional globals and locals. If provided, globals must be a dictionary. If provided, locals can

繼續(xù)訪(fǎng)問(wèn)

eval()函數(shù)的

python中print函數(shù)的用法

print()函數(shù)用于打印輸出,是python中最常見(jiàn)的一個(gè)內(nèi)置函數(shù)。

print()函數(shù)的語(yǔ)法如下:

print(*objects, sep=' ', end='\n', file=sys.stdout, flush=False)。

將"objects"打印輸出至"file參數(shù)"指定的文本流,以"sep參數(shù)"分隔開(kāi)并在末尾加上"end參數(shù)"。"sep"、"end "、"file"和"flush"必須以關(guān)鍵字參數(shù)的形式給出。flush關(guān)鍵字參數(shù)是在phthon3.3版后增加的。

所有非關(guān)鍵字參數(shù)都會(huì)被轉(zhuǎn)換為字符串,就像是執(zhí)行了str()一樣,并會(huì)被寫(xiě)入到流,以“sep參數(shù)“且在末尾加上“end參數(shù)“?!皊ep參數(shù)“和“end參數(shù)“都必須為字符串;它們也可以為“None“,這意味著使用默認(rèn)值。如果沒(méi)有給出“objects參數(shù)“,則print()將只寫(xiě)入“end參數(shù)“。

ython print()函數(shù):

print()方法用于打印輸出,最常見(jiàn)的一個(gè)函數(shù)。

在Python3.3版增加了flush關(guān)鍵字參數(shù)。

print在Python3.x是一個(gè)函數(shù),但在Python2.x版本不是一個(gè)函數(shù),只是一個(gè)關(guān)鍵字。

Python中冷門(mén)但非常好用的內(nèi)置函數(shù)

Python中有許多內(nèi)置函數(shù),不像print、len那么廣為人知,但它們的功能卻異常強(qiáng)大,用好了可以大大提高代碼效率,同時(shí)提升代碼的簡(jiǎn)潔度,增強(qiáng)可閱讀性

Counter

collections在python官方文檔中的解釋是High-performance container datatypes,直接的中文翻譯解釋高性能容量數(shù)據(jù)類(lèi)型。這個(gè)模塊實(shí)現(xiàn)了特定目標(biāo)的容器,以提供Python標(biāo)準(zhǔn)內(nèi)建容器 dict , list , set , 和 tuple 的替代選擇。在python3.10.1中它總共包含以下幾種數(shù)據(jù)類(lèi)型:

容器名簡(jiǎn)介

namedtuple() 創(chuàng)建命名元組子類(lèi)的工廠函數(shù)

deque 類(lèi)似列表(list)的容器,實(shí)現(xiàn)了在兩端快速添加(append)和彈出(pop)

ChainMap 類(lèi)似字典(dict)的容器類(lèi),將多個(gè)映射集合到一個(gè)視圖里面

Counter 字典的子類(lèi),提供了可哈希對(duì)象的計(jì)數(shù)功能

OrderedDict 字典的子類(lèi),保存了他們被添加的順序

defaultdict 字典的子類(lèi),提供了一個(gè)工廠函數(shù),為字典查詢(xún)提供一個(gè)默認(rèn)值

UserDict 封裝了字典對(duì)象,簡(jiǎn)化了字典子類(lèi)化

UserList 封裝了列表對(duì)象,簡(jiǎn)化了列表子類(lèi)化

UserString 封裝了字符串對(duì)象,簡(jiǎn)化了字符串子類(lèi)化

其中Counter中文意思是計(jì)數(shù)器,也就是我們常用于統(tǒng)計(jì)的一種數(shù)據(jù)類(lèi)型,在使用Counter之后可以讓我們的代碼更加簡(jiǎn)單易讀。Counter類(lèi)繼承dict類(lèi),所以它能使用dict類(lèi)里面的方法

舉例

#統(tǒng)計(jì)詞頻

fruits = ['apple', 'peach', 'apple', 'lemon', 'peach', 'peach']

result = {}

for fruit in fruits:

if not result.get(fruit):

result[fruit] = 1

else:

result[fruit] += 1

print(result)

#{'apple': 2, 'peach': 3, 'lemon': 1}下面我們看用Counter怎么實(shí)現(xiàn):

from collections import Counter

fruits = ['apple', 'peach', 'apple', 'lemon', 'peach', 'peach']

c = Counter(fruits)

print(dict(c))

#{'apple': 2, 'peach': 3, 'lemon': 1}顯然代碼更加簡(jiǎn)單了,也更容易閱讀和維護(hù)了。

elements()

返回一個(gè)迭代器,其中每個(gè)元素將重復(fù)出現(xiàn)計(jì)數(shù)值所指定次。元素會(huì)按首次出現(xiàn)的順序返回。如果一個(gè)元素的計(jì)數(shù)值小于1,elements()將會(huì)忽略它。

c = Counter(a=4, b=2, c=0, d=-2)

sorted(c.elements())

['a', 'a', 'a', 'a', 'b', 'b']most_common([n])

返回一個(gè)列表,其中包含n個(gè)最常見(jiàn)的元素及出現(xiàn)次數(shù),按常見(jiàn)程度由高到低排序。如果n被省略或?yàn)镹one,most_common()將返回計(jì)數(shù)器中的所有元素。計(jì)數(shù)值相等的元素按首次出現(xiàn)的順序排序:

Counter('abracadabra').most_common(3)

[('a', 5), ('b', 2), ('r', 2)]這兩個(gè)方法是Counter中最常用的方法,其他方法可以參考 python3.10.1官方文檔

實(shí)戰(zhàn)

Leetcode 1002.查找共用字符

給你一個(gè)字符串?dāng)?shù)組words,請(qǐng)你找出所有在words的每個(gè)字符串中都出現(xiàn)的共用字符(包括重復(fù)字符),并以數(shù)組形式返回。你可以按任意順序返回答案。

輸入:words = ["bella", "label", "roller"]

輸出:["e", "l", "l"]

輸入:words = ["cool", "lock", "cook"]

輸出:["c", "o"]看到統(tǒng)計(jì)字符,典型的可以用Counter完美解決。這道題是找出字符串列表里面每個(gè)元素都包含的字符,首先可以用Counter計(jì)算出每個(gè)元素每個(gè)字符出現(xiàn)的次數(shù),依次取交集最后得出所有元素共同存在的字符,然后利用elements輸出共用字符出現(xiàn)的次數(shù)

class Solution:

def commonChars(self, words: List[str]) - List[str]:

from collections import Counter

ans = Counter(words[0])

for i in words[1:]:

ans = Counter(i)

return list(ans.elements())提交一下,發(fā)現(xiàn)83個(gè)測(cè)試用例耗時(shí)48ms,速度還是不錯(cuò)的

sorted

在處理數(shù)據(jù)過(guò)程中,我們經(jīng)常會(huì)用到排序操作,比如將列表、字典、元組里面的元素正/倒排序。這時(shí)候就需要用到sorted(),它可以對(duì)任何可迭代對(duì)象進(jìn)行排序,并返回列表

對(duì)列表升序操作:

a = sorted([2, 4, 3, 7, 1, 9])

print(a)

# 輸出:[1, 2, 3, 4, 7, 9]對(duì)元組倒序操作:

sorted((4,1,9,6),reverse=True)

print(a)

# 輸出:[9, 6, 4, 1]使用參數(shù):key,根據(jù)自定義規(guī)則,按字符串長(zhǎng)度來(lái)排序:

fruits = ['apple', 'watermelon', 'pear', 'banana']

a = sorted(fruits, key = lambda x : len(x))

print(a)

# 輸出:['pear', 'apple', 'banana', 'watermelon']all

all() 函數(shù)用于判斷給定的可迭代參數(shù)iterable中的所有元素是否都為 TRUE,如果是返回 True,否則返回 False。元素除了是 0、空、None、False外都算True。注意:空元組、空列表返回值為T(mén)rue。

all(['a', 'b', 'c', 'd']) # 列表list,元素都不為空或0

True

all(['a', 'b', '', 'd']) # 列表list,存在一個(gè)為空的元素

False

all([0, 1,2, 3]) # 列表list,存在一個(gè)為0的元素

False

all(('a', 'b', 'c', 'd')) # 元組tuple,元素都不為空或0

True

all(('a', 'b', '', 'd')) # 元組tuple,存在一個(gè)為空的元素

False

all((0, 1, 2, 3)) # 元組tuple,存在一個(gè)為0的元素

False

all([]) # 空列表

True

all(()) # 空元組

Trueany函數(shù)正好和all函數(shù)相反:判斷一個(gè)tuple或者list是否全為空,0,F(xiàn)alse。如果全為空,0,F(xiàn)alse,則返回False;如果不全為空,則返回True。

F-strings

在python3.6.2版本中,PEP 498提出一種新型字符串格式化機(jī)制,被稱(chēng)為 “字符串插值” 或者更常見(jiàn)的一種稱(chēng)呼是F-strings,F(xiàn)-strings提供了一種明確且方便的方式將python表達(dá)式嵌入到字符串中來(lái)進(jìn)行格式化:

s1='Hello'

s2='World'

print(f'{s1} {s2}!')

# Hello World!在F-strings中我們也可以執(zhí)行函數(shù):

def power(x):

return x*x

x=4

print(f'{x} * {x} = {power(x)}')

# 4 * 4 = 16而且F-strings的運(yùn)行速度很快,比傳統(tǒng)的%-string和str.format()這兩種格式化方法都快得多,書(shū)寫(xiě)起來(lái)也更加簡(jiǎn)單。

本文主要講解了python幾種冷門(mén)但好用的函數(shù),更多內(nèi)容以后會(huì)陸陸續(xù)續(xù)更新~


本文題目:python中很酷的函數(shù) 好玩又簡(jiǎn)單的python函數(shù)代碼
URL地址:http://weahome.cn/article/hhpjsp.html

其他資訊

在線(xiàn)咨詢(xún)

微信咨詢(xún)

電話(huà)咨詢(xún)

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部