python 列表操作

2021-06-04 13:01:41 字數 4083 閱讀 9693

list:

一種順序儲存結構,序列的一種,列表元素可以是任何型別,類似陣列,引用型別。

格式定義:olist=[1,'str',,...]

定義乙個空的list:olist=

獲取列表元素個數:len(olist)

刪除乙個列表:del olist

刪除乙個列表元素:del list[i]

「+」支援:olist1+olist2

列表相關操作:

len([1,'str',])的返回值是2,後面多餘的逗號不能算多了乙個元素。

olist.extend(olist):追加乙個列表,等價於+=。

olist.insert(i,x):在位置i處插入x,其餘向後退。大於列表長度在最後新增,小於0在開始處新增。

olist.remove(x):刪除值為x的元素,長度減一,不存在丟擲valueerror異常。

olist.reverse():在原序列上反轉,返回值為none。

olist.pop([i]):返回並刪除位置為i的元素,i預設為最後乙個元素。

olist.index(i):返回x在列表中第一次出現的位置,不存在丟擲valueerror異常。

olist.count(x):返回x在列表中出現的次數。 

olist.sort():排序。

list操作:快速建立list、新增item、刪除item、重新賦值item、顛倒item順序、檢索item

快捷建立list,兩種方式:split方法、list函式和range函式配合使用。

split方法。寫乙個字串,字元之間以空格分隔,然後對該字串使用split方法。

a_list = 'a b c d e f g'.spit()  //建立列表['a','b','c','d','e','f','g'],但這種寫法要簡潔很多

list函式和range函式配合使用。可以快速地建立乙個非常大的列表。

a_list = list(range(100)) 

//很方便地建立乙個0到99的列表

//在原有列表末尾新增乙個型別為列表的item

extend方法新增。它類似於concatenation,只接受列表引數,並把列表中的item分解,然後新增到原有的列表:

a_list.extend('hello')  //在原有列表末尾新增5個字元item,因為它把hello視為列表

a_list.extend(['hello'])  //在原有列表末尾新增1個item

insert方法新增。在原有列表中插入item:

a_list.insert(0,'c') 

//在原有列表的0位置新增乙個字元

a_list.insert(0.['c']) 

//在原有列表的0位置新增乙個列表

刪除item,三種方式:del、remove、pop,後兩種方式都是列表的方法。

示例列表:a_list = ['a','b','c','hello']:

del刪除。它按item的索引值或切片進行刪除:

del a_list[0] 

//刪除列表的第乙個值

del a_list[:2] 

//刪除列表的前兩個值。(為什麼不是前三個呢?因為python的列表切片,包含前乙個索引,但不包括後乙個索引)

remove方法刪除。它不按item索引,而是按照item的值進行刪除:

a_list.remove('a')  //把a從列表中刪除

pop方法刪除。它按item索引值進行刪除,同時返回被刪除的item值;若不指定索引,預設刪除最後乙個item:

a_list.pop(1)  //刪除列表的第二個值,並返回被刪除的值

a_list.pop() 

//刪除列表的最後乙個值,並返回被刪除的值

重新賦值item,對指定索引使用assignment符號進行賦值:

示例列表:a_list = ['a','b','c','hello']:

a_list[1] = 'bbb' //列表的第二個值b,將被替換為bbb

顛倒列表的item順序,reverse方法:

示例列表:a_list = ['a','b','c','hello']:

a_list.reverse()  //列表的item順序將被從後到前重新排列,更改為['hello','c','b','a']

檢索列表的值,四種方式:in、not in、count、index,後兩種方式是列表的方法。

示例列表:a_list = ['a','b','c','hello']:

判斷值是否在列表中,in操作符:

'a' in a_list  //判斷值a是否在列表中,並返回true或false

判斷值是否不在列表,not in操作符:

'a' not in a_list 

//判斷a是否不在列表中,並返回true或false

統計指定值在列表中出現的次數,count方法:

a_list.count('a')  //返回a在列表中的出現的次數

檢視指定值在列表中的位置,index方法:

a_list.index('a') 

//返回a在列表中每一次出現的位置,預設搜尋整個列表

a_list.index('a',0,3)  //返回a在指定切片內第一次出現的位置

list遍歷:

python的列表list可以用for迴圈進行遍歷,實際開發中發現乙個問題,就是遍歷的時候刪除會出錯,例如

l = [1,2,3,4]

for i in l:

if i != 4:

l.remove(i)

print l

這幾句話本來意圖是想清空列表l,只留元素4,但是實際跑起來並不是那個結果。再看下面,利用index來遍歷刪除列表l

l = [1, 2, 3, 4]

for i in range(len(l)):

if l[i] == 4:

del l[i]

print l

這樣沒問題,可以遍歷刪除,但是列表l如果變為 l = [1,2,3,4,5]

如果還是按照上面的方法,設想一下,range開始的範圍是0-4,中間遍歷的時候刪除了乙個元素4,這個時候列表變成了= [1,2,3,5],這時候就會報錯了,提示下標超出了陣列的表示,原因就是上面說的遍歷的時候刪除了元素

所以python的list在遍歷的時候刪除元素一定要小心

可以使用filter過濾返回新的list

l = [1,2,3,4]

l = filter(lambda x:x !=4,l)

print l

這樣可以安全刪除l中值為4的元素了,filter要求兩個引數,第乙個是規則函式,第二個引數要求輸入序列,而lambda這個函式的作用就是產生乙個函式,是一種緊湊小函式的寫法,一般簡單的函式可以這麼些

或者可以這樣

l = [1,2,3,4]

l = [ i for i in l if i !=4]//同樣產生乙個新序列,復值給l

print l

或者乾脆建立新的list存放要刪除的元素

l = [1,2,3,4]

dellist =

for i in l:

if i == 4:

for i in dellist:

l.remove(i)

這樣也能安全刪除元素

所以要遍歷的時候刪除元素一定要小心,特別是有些操作並不報錯,但卻沒有達到預期的效果

上面說到產生新序列,賦值等等,用python的id()這個內建函式來看物件的id,可以理解為記憶體中的位址,所以有個簡要說明

如果l = [1,2,3,4]

ll = l

l.remove(1)

print l//肯定是[2,3,4]

print ll//這裡會是什麼?

如果用id函式檢視的話就發現

print id(l),id(ll)

列印出相同的號碼,說明他們其實是乙個值,也就是說上面的print ll將和l列印的一樣,所以python有這種性質,用的時候注意一下就行了

python列表建立操作 python列表操作

建立列表 sample list a 1,a b python 列表操作 sample list a b 0,1,3 得到列表中的某乙個值 value start sample list 0 end value sample list 1 刪除列表的第乙個值 del sample list 0 在列...

python列表建立操作 python列表操作

列表是最常用的python資料型別,它可以作為乙個方括號內的逗號分隔值出現。列表的資料項不需要具有相同的型別。如 list a b 2,5,1 1 新建列表 stus 建立空列表 stus1 list 建立空列表 print stus print stus1 stus 范冰冰 維達 soon 上述 ...

Python 列表操作

參考原文 1.建立列表。只要把逗號分隔的不同的資料項使用方括號括起來即可 1 list wade james bosh haslem 與字串的索引一樣,列表索引從0開始。列表可以進行擷取 組合等 2.新增新的元素 allen 方式一 向list結尾新增 引數object 2 a 1,2,3,4 4 ...