Python列表解析操作例項總結
本文例項講述了Python列表解析操作。分享給大家供大家參考,具體如下:
列表解析
Python 的強大特性之一是其對 list 的解析,它提供一種緊湊的方法,可以通過對 list 中的每個元素應用一個函式,從而將一個 list 對映為另一個 list。
列表解析,又叫列表推導式( list comprehension)
列表解析比 for 更精簡,執行更快,特別是對於較大的資料集合
列表解析可以替代絕大多數需要用到 map和 filter的場合
列表推導式提供了一個建立連結串列的簡單途徑,無需使用 map() , filter() 以及 lambda 。以定義方式得到列表通常要比使用建構函式建立這些列表更清晰。每一個列表推導式包括在一個 for 語句之後的表示式,零或多個 for 或 if 語句。返回值是由 for 或 if 子句之後的表示式得到的元素組成的列表。如果想要得到一個元組,必須要加上括號。
基本列表解析
基本
>>> [x for x in range(5)] # [0,1,2,3,4] l1 = [1,4] [ x*2 for x in l1] #[2,4,6,8]
多個值的
[ '%s = %s' for (k,v) in a_map.items()]
兩次迴圈
>>> l1 = [1,4] >>> l2 = [1,4] >>> [x+y for x in l1 for y in l2] [2,5,7,8]
可以呼叫函式
[ func(x) for x in l1] #等價於map
注意,列表解析不會改變原有列表的值,會建立新的list
條件列表解析
[ x for x in range(100) if x%2 ==0 ]
巢狀列表解析
mat = [ [1,3],[4,6],[7,8,9]]
交換行列
[ [row[i] for row in mat] for i in (0,2)] #[[1,7],[2,8],[3,9]]
其他:
1.根據索引取元素時,需要進行邊界檢查 IndexError 切片取,不需要,超過邊界不會異常
2.在迭代中修改列表 注意,不安全,不建議這麼幹 但是可以 for i in l1[:]: l1.insert()……
3.多個list合成一個 就是
['a','b',.....],['a','b'.....]['a','b'.....]
變為
['a',.....,'a','b'.....'a','b'.....]
處理
>>> sum ([[ 'a','b' ],'b'],[ 'a','b' ]],[]) ['a','b'] >>> list (itertools .chain([ 'a','b'])) ['a','b']
4.關於堆疊和佇列
通過上面的操作,可以發現,很輕易可以拿列表當做堆疊或者佇列使用
當然,他們有自己的模組,可以查相關庫
5.序列相關模組
array 一種受限制可變序列型別,要求所有元素必須是相同型別
copy 提供淺拷貝和深拷貝的能力
operator 包含函式呼叫形式的序列操作符,如 operator.concat(m,n) 相當於m+n
re 正則表示式
types 包含Python 支援的所有型別
collections 高效能容器資料型別
更多關於Python相關內容可檢視本站專題:《Python列表(list)操作技巧總結》、《Python字串操作技巧彙總》、《Python資料結構與演算法教程》、《Python函式使用技巧總結》、《Python入門與進階經典教程》及《Python檔案與目錄操作技巧彙總》
希望本文所述對大家Python程式設計有所幫助。