【学习笔记】Python 基础零碎知识
Python 基礎(chǔ)零碎知識
條件表達(dá)式
比如上面的if條件判斷,我們可以用條件表達(dá)式(Conditional Expression)更加簡潔的書寫。
y = math.log(x) if x > 0 else float('nan')
— y的值在x大于0的時候是math.log(x),否則是float('nan')
再比如下面的遞歸函數(shù):
一般來說,如果條件語句的兩個條件分支都包含簡單的返回或者對同一個變量進(jìn)行賦值的表達(dá)式,那么這個語句可以轉(zhuǎn)化為條件表達(dá)式。
列表理解
比如上面的函數(shù),功能是接收一個字符串列表,然后將其首字母變成大寫后進(jìn)行返回。
我們可以使用列表理解(List Comprehension)將其以更加緊湊的方式書寫。
方括號說明我們要構(gòu)建一個新列表,方括號內(nèi)的表達(dá)式指定了列表的元素,for子句表示我們要遍歷的里序列。
列表理解還可以用于過濾操作,比如下例子:
列表理解難以調(diào)試,沒法在循環(huán)內(nèi)添加打印語句,建議只在計算一次就能得到結(jié)果的情況下使用。
生成器表達(dá)式
生成器表達(dá)式(Generator Expression)和列表理解有點類似,不同的是生成器表達(dá)式使用的是圓括號,而非方括號。
生成器表達(dá)式的結(jié)果是一個生成器對象,它不會一次把結(jié)果都計算出來,可以使用for循環(huán)來遍歷所有值。
生成器對象會跟蹤訪問序列的位置,所以for循環(huán)會從上一個next所在的位置繼續(xù),一旦生成器遍歷結(jié)束,再訪問它就會拋出Stop Iteration異常。
通常會有sum、max、min等函數(shù)配合使用。
any和all
Python提供了一個內(nèi)置函數(shù)any,它接收一個由布爾值組成的序列,并且其中任何一個元素值是True時就返回True。
而Python提供的另一個內(nèi)置函數(shù)all,它接收一個由布爾值組成的序列,并且其中所有元素值是True時才返回True。
集合
Python中提供了一種內(nèi)置類型—集合(set),它類似于沒有值而只有鍵的字典。向一個集合添加元素很快,檢查集合成員也很快,集合還提供了方法和操作符來進(jìn)行常見的集合操作。
比如下面的例子,d1是一個字典,d2是一個單詞列表,判斷字典中的鍵哪個不在列表中,就可以簡單的使用集合減法處理(方法difference或者操作符“-”)。
計數(shù)器
計數(shù)器(Counter)和集合類似,不同之處在于,如果一個元素出現(xiàn)超過一次,計算器會記錄它出現(xiàn)了多少次。計數(shù)器定義在標(biāo)準(zhǔn)模塊collections中,使用前需導(dǎo)入。
在訪問計數(shù)器中不存在的元素時,不會拋出異常,會返回0,表示出現(xiàn)了0次。
計數(shù)器還提供了一個非常常用的方法most_common,返回一個值-頻率對的列表,按照最常見的到最少見來排序。
defaultdict
標(biāo)準(zhǔn)模塊collections中還提供了defaultdict,和字典類似,但是訪問不存在的鍵,它會自動創(chuàng)建一個新值。
命名元組
Python中提供了命名元組“namedtuple”來更加簡潔地創(chuàng)建上面這樣的類。
第一個參數(shù)是需要創(chuàng)建的類名,第二個參數(shù)是對應(yīng)包含的屬性列表,以字符串表示。
返回的是一個類對象,該類會自動提供__init__和__str__方法,所以不需要寫它們。
收集關(guān)鍵詞參數(shù)
上面的函數(shù)可以使用任意個數(shù)的按位實參來調(diào)用,但是“*”操作符并不會收集關(guān)鍵詞實參,若想要收集關(guān)鍵字實參,可以使用“**”操作符,收集的結(jié)果是一個將關(guān)鍵字映射到值的字典。
?
總結(jié)
以上是生活随笔為你收集整理的【学习笔记】Python 基础零碎知识的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【转载】SAP集成会计凭证生成的原理
- 下一篇: 【目录】Python 入门基础篇 <(^