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