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