python反轉列表解析 Python 列表

2021-10-22 12:39:54 字數 2892 閱讀 5110

python 列表

python的列表物件是這個語言提供的最通用的序列.列表是乙個任意型別的物件的位置相關的有序集合,沒有固定大小.不像字串,其大小是可變的,通過對偏移量進行賦值及其各種方法進行呼叫,確實能夠修改列表的大小

1.序列操作

列表是序列的一種,支援所有對字串討論過的操作,唯一區別是其結果是列表

例如:乙個有三個元素的列表

l=[123,』spam』,1.23]

len(l)

對列表可以進行索引,切片等操作,如之前的字串那樣

l[0]

l[:-1]

[123,』spam』]

l+[4,5,,6]

[123, 』spam』, 1.23, 4, 5, 6]

l[123,』spam』,1.23]

2.特定型別的操作

列表類似其他語言的陣列,但要強大的多,其中乙個方面是,列表沒有固定型別的約束(如上述例子中列表包含三個完全不同型別的物件,乙個整數,乙個字串,乙個浮點數),列表沒有固定大小,能夠按照需要增加或減少列表大小,來影響其特定的操作.

l[123,』spam』,1.23,』ni』]

l.pop(2)

1.23

l[123,』spam』,』ni』]

pop方法(或者等效的del語句)移除給定偏移量的一項,從而讓列表減小;

其他的列表方法可以在任意位置插入(insert)元素,按照值移除(remove)元素

大多數列表的方法都會就地改變列表物件,而不是建立乙個新列表:

m=[『bb』,』cc』,』aa』]

m.sort()

m[『aa』,』bb』,』cc』]

m.reverse()

m[『cc』,』bb』,』aa』]

這裡的列表sort方法預設按公升序對列表排序

而reverse方法對列表進行反轉

都是直接對列表進行改變

3.邊界檢查

python不允許不存在的元素,超出列表之外的索引會導致錯誤,對列表末尾範圍之外進行賦值也是錯誤的

l[123,』spam』,』ni』]

l[99]

...error..

l[99]=1

...error...

4.巢狀

特性:支援任意巢狀

例如:能夠讓乙個列表包含乙個字典,並在這個字典中包含另乙個列表,特性的直接應用就是實現矩陣,或python中的多維陣列

m=[[1,2,3],

[4,5,6],

[7,8,9]]

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

其效果實現3*3的數字矩陣,可通過多種方法獲取元素

m[1]     讀取整個第二行

[4,5,6]

m[1][2]   讀取第二行的第三個元素

串聯起索引操作可以逐層深入的獲取巢狀的物件結構(這種矩陣結構適用於小規模任務,對於大型結構,可以使用numpy)

5.列表解析

通過對序列中的每一項執行乙個表示式來建立乙個新的列表的方法,每次乙個,從左至右.列表解析是編寫在方括號中的(),並且由使用同乙個變數名的(這裡是row)表示式和迴圈結構組成》 m=[[1,2,3],[4,5,6],[7,8,9]]

>> m

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

>> col2=[row[1] for row in m]

>> col2

[2, 5, 8]

>> m

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

意思是:把矩陣m的每個row中的row[1],放在乙個新列表中.

實際應用更複雜,如:>> [row[1]+1 for row in m]

[3, 6, 9]

此操作是把蒐集到的(第二列)每個元素都加了1

>> row[1]

>> [row[1] for row in m if row[1]%2==0]

[2, 8]

此操作是使用if條件語句,通過使用%求餘表示式(取餘數)過濾結果中的奇數

>> row[0]

>> row

[7, 8, 9]

列表解析建立新的列表作為結果,但是能夠在任何可迭代物件上迭代,例如:

使用列表解析區步進座標的乙個應編碼列表和乙個字串》 diag=[m[i][i] for i in [0,1,2]]      (從矩陣中收集對角線)

>> diag

[1, 5, 9]

>> doubles=[c*2 for c in 'spam']   (在乙個字串中重複字元)

>> doubles

['ss', 'pp', 'aa', 'mm']

內建sum函式,按一種順序彙總各項》 m

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

>> g = (sum(row) for row in m)

>> next(g)

>> next(g)

>> next(g)

括號中的解析語法也可以用來建立產生所需結果的生成器(用內建函式map產生對各項執行乙個函式的結果)>> list(map(sum,m))

[6, 15, 24]

解析語法也可以用來建立集合和字典:>>

set([24, 6, 15])

>>

l列表,集合和字典都可以用解析來建立:>> [ord(x) for x in 'spam']

[115, 112, 97, 109]

>>

set([112, 97, 115, 109])

>> [ord(x) for x in 'spaam']

[115, 112, 97, 97, 109]

>>

set([112, 97, 115, 109])

>>

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,...