您好,登錄后才能下訂單哦!
這篇文章給大家分享的是有關(guān)Python列表解析操作的示例分析的內(nèi)容。小編覺得挺實用的,因此分享給大家做個參考,一起跟隨小編過來看看吧。
Python 的強大特性之一是其對 list 的解析,它提供一種緊湊的方法,可以通過對 list 中的每個元素應(yīng)用一個函數(shù),從而將一個 list 映射為另一個 list。
列表解析,又叫列表推導(dǎo)式( list comprehension)
列表解析比 for 更精簡,運行更快,特別是對于較大的數(shù)據(jù)集合
列表解析可以替代絕大多數(shù)需要用到 map和 filter的場合
列表推導(dǎo)式提供了一個創(chuàng)建鏈表的簡單途徑,無需使用 map() , filter() 以及 lambda 。以定義方式得到列表通常要比使用構(gòu)造函數(shù)創(chuàng)建這些列表更清晰。每一個列表推導(dǎo)式包括在一個 for 語句之后的表達式,零或多個 for 或 if 語句。返回值是由 for 或 if 子句之后的表達式得到的元素組成的列表。如果想要得到一個元組,必須要加上括號。
基本
>>> [x for x in range(5)] # [0, 1, 2, 3, 4] l1 = [1,2,3,4] [ x*2 for x in l1] #[2,4,6,8]
多個值的
[ '%s = %s' for (k, v) in a_map.items()]
兩次循環(huán)
>>> l1 = [1,2,3,4] >>> l2 = [1,2,3,4] >>> [x+y for x in l1 for y in l2] [2, 3, 4, 5, 3, 4, 5, 6, 4, 5, 6, 7, 5, 6, 7, 8]
可以調(diào)用函數(shù)
[ func(x) for x in l1] #等價于map
注意,列表解析不會改變原有列表的值,會創(chuàng)建新的list
[ x for x in range(100) if x%2 ==0 ]
mat = [ [1, 2, 3],[4, 5, 6], [7, 8, 9]]
交換行列
[ [row[i] for row in mat] for i in (0,1,2)] #[[1, 4, 7], [2, 5, 8], [3, 6, 9]]
1.根據(jù)索引取元素時,需要進行邊界檢查 IndexError 切片取,不需要,超過邊界不會異常
2.在迭代中修改列表 注意,不安全,不建議這么干 但是可以 for i in l1[:]: l1.insert()……
3.多個list合成一個 就是
['a','b',.....],['a','b'.....]['a','b'.....]
變?yōu)?/p>
['a','b',.....,'a','b'.....'a','b'.....]
處理
>>> sum ([[ 'a', 'b' ],['a' , 'b'],[ 'a' ,'b' ]], []) ['a' , 'b' , 'a', 'b' , 'a' , 'b'] >>> list (itertools .chain([ 'a' ,'b' ],[ 'a', 'b' ],['a' , 'b'])) ['a' , 'b' , 'a', 'b' , 'a' , 'b']
4.關(guān)于堆棧和隊列
通過上面的操作,可以發(fā)現(xiàn),很輕易可以拿列表當(dāng)做堆?;蛘哧犃惺褂?
當(dāng)然,他們有自己的模塊,可以查相關(guān)庫
5.序列相關(guān)模塊
array 一種受限制可變序列類型,要求所有元素必須是相同類型
copy 提供淺拷貝和深拷貝的能力
operator 包含函數(shù)調(diào)用形式的序列操作符,如 operator.concat(m,n) 相當(dāng)于m+n
re 正則表達式
types 包含Python 支持的所有類型
collections 高性能容器數(shù)據(jù)類型
感謝各位的閱讀!關(guān)于“Python列表解析操作的示例分析”這篇文章就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,讓大家可以學(xué)到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。