Python列表解析操作例項總結

2022-10-04 14:51:26 字數 1856 閱讀 1609

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,2,3,4]

[ x*2 for x in l1] #[2,4,6,8]

多個值的

[ '%s = %s' for (k, v) in a_map.items()]

兩次迴圈

>>> l1 = [1,2,3,4]

>>> l2 = [1,2,3,4]

>>> [x+y for x i l1 for y in l2]

[2, 3, 4, 5, 3, 4, 5, 6, 4, 5, 6, 7, 5, 6, 7, 8]

可以呼叫函式

[ func(x) for x in l1] #等價於map

注意,列表解析不會改變原有列表的值,會建立新的list

條件列表解析

[ x for x in range(100) if x%2 ==0 ]

巢狀列表解析

mat = [ [1, 2, 3],[4, 5, 6], [7, 8, 9]]

交換行列

[ [row[www.cppcns.comi] for row in mat] for i in (0,1,2)] #[[1, 4, 7], [2, 5, 8], [3, 6, 9]]

其他:1.根據索引取元素時,需要進行邊界檢查 indexerror 切片取,不需要,超過邊界不會異常

2.在迭代中修改列表 注意,不安全,不建議這麼幹 但是可以 for i in l1[:]: l1.insert()……

3.多個list合成乙個 就是

['a','b',.....],['a','b'.....]['a','b'.....]

變為['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']www.cppcns.com))

['a' , 'b' , 'a', 'b' , 'a' , 'b']

4.關於堆疊和佇列

通過上面的操作,可以發現,很輕易可以拿列表當做堆疊或者佇列使用

當然,他們有自己的模組,可以查相關庫

5.序列相關模組

array 一種受限制可變序列型別,要求所有元素必須是相同型別

copy 提供淺拷貝和深拷貝的能力

operator 包含函式呼叫形式的序列操作符,如 operator.concat(m,n) 相當於m+n

re 正規表示式

types 包含python 支援的所有型別

collekjtvvyqctions 高效能容器資料型別

python列表解析

列表解析是乙個列表對映出另乙個列表,它的基本形式是乙個方括號裡面包含乙個for語句對乙個iterable物件迭代 expression for target1 in iterable1 if condition1 for targetn in iterablen if conditionn 上面是列...

python 列表解析

m 1,2,3 4,5,6 7,8,9 col2 row 1 for row in m 獲取列表m的每個元素的第二個元素的值組成的列表 print col2 print row 1 1 for row in m 獲取列表m的每個元素的第二個元素 1的值組成的列表 print row 1 for ro...

Python列表解析

語法 1.expression for iter val in iterable 2.expression for iter val in iterable if cond expr l i 2 for i in range 1,11 print l 1,4,9,16,25,36,49,64,81,...