python列表總結

之前專業課程設計,讓寫一個客戶端和服務器的通訊錄查詢系統。大家都用C語言寫的。只有我用python做的,當時感覺python這個東西挺有意思。但是仔細看了python之後會發現,其實我當時寫出來的的,只不過是python版寫的C語言而已。


給我的感覺就是,我是在用python在寫C語言的程序,雖然是python的語句,可是思想卻是按照C語言的流程在走。深入的學習下python卻發現,其實python和C有着完全不同的風格。甚至完全不同的設計形式。當然這只是我這個python初學者的一點點小小的體悟而已啦。


初學python,我這個習慣了C的小菜鳥老是記不住好多複雜的方法和操作,這裏對列表進行一下總結。以便日後學習。


其實我本來想先對python的所有數據類型做個小總結的,但是感覺並沒有把握python全部變量設計的思想。只能先一樣一樣的進行總結。


列表是一種可變的數據類型,他由一系列的元素組成,這一系列可以使任何類型的元素,可以是不同類型的元素。列表,不過是一個有序的序列而已,用來組織一堆有規則或者無規則的數據。


1、列表創建和賦值:


list_name=[element1,element2,element3,...]


列表中可以添加任何類型的元素,如下的例子:


>>> list=[1,2.5,'a','abc',[5,6],(7,8)]

>>> print list

[1, 2.5, 'a', 'abc', [5, 6], (7, 8)]

如上,一個列表中可以添加整數、浮點數、字符、字符串、另一個列表、元組等各種不同的數據類型。


2、添加元素:


列表對象在Python中是List類,python爲List類提供了append方法,用來在列表的尾部添加一個元素,如下:


>>> list_1=[1]

>>> list_1.append(2)

>>> list_1.append('hello')

>>> print list_1

[1, 2, 'hello']


append的參數類型爲object,即可以爲List添加任何類型的元素。使用點號來調用append方法。


List類還有一個方法insert,用於將元素插入到列表中指定索引的位置,語法如insert(index,value),即往index索引的位置插入值爲value的元素,後邊的元素依次往後移。如下:


>>> list_2=[1,2,3,4,5,6]

>>> list_2.insert(1,'hello')

>>> list_2.insert(4,'world')

>>> print list_2

[1, 'hello', 2, 3, 'world', 4, 5, 6]


3、刪除元素:


列表的刪除使用remove()方法,該方法用於移除列表中指定值的第一個匹配值。如果元素不存在,python將拋出ValueError異常。如下:


>>> list=[1,2,3,4,5]

>>> list.remove(3)

>>> print list

[1, 2, 4, 5]


從一個列表中刪除元素還可以用del語句來實現,該語句將刪除列表中指定索引位置的元素。如下:


>>> list=[1,2,3,4,5]

>>> del list[2]

>>> print list

[1, 2, 4, 5]


4、分片(slice)操作:


就像dota中每個英雄都有一個靈魂技能一樣,我感覺分片操作就是列表的靈魂技能。這個操作可以隨意的取出列表中的任何一部分。分片操作中有兩個索引,指的是從第一個索引到第二個索引中所指定的所有元素(不包含第二個索引所指向的元素)。格式如:list_name[m:n]。


>>> list_1=['p','y','t','h','o','n']

>>> list_1[2:]=['q','t']

>>> print list_1

['p', 'y', 'q', 't']


如果沒有指定分片的後一個索引,那麼指的是從第一個索引元素到最後一個元素。


>>> list_1[2:2]=['h','e','l','l','o']

>>> print list_1

['p', 'y', 'h', 'e', 'l', 'l', 'o', 'q', 't']

接上邊的代碼,這裏list_1[2:2],用一個與原序列不等長的序列將一個分片替換掉,這裏替換的是一個空的分片。實際上的操作其實是插入了一個序列。


以此類推,使用這種方法來刪除元素其實也是可行的。


5、負數索引:


在列表中讓我感覺到跟普通的C數組最大不同的就是使用負數的索引。負數索引從列表的尾部開始計數,最尾端的元素索引表示爲-1,然後依次往前是-2,-3....以此類推。


>>> test_list=['hello','world','python']

>>> print test_list[-2]

world

分片處理之中也是可以使用負數的索引的,其實我覺得python解釋的時候負數與正數都是一樣的,只是按照不同的規則表示的列表中的元素而已。


>>> test_list=[1,2,3,4,5,6]

>>> list_2=test_list[1:4]

>>> list_3=test_list[-3:-1]

>>> list_4=test_list[0:-2]

>>> print list_2

[2, 3, 4]

>>> print list_3

[4, 5]

>>> print list_4

[1, 2, 3, 4]


如上代碼,有了負數索引的規定,其他的一切操作都是與正數相同的,我想這個機制大概只是爲了讓程序員更方便而定義的吧。


6、列表的連接:


列表連接總共有兩種實現方式,一種是調用extend()方法,這個方法其實很簡單,以一個列表作爲參數,這個列表就是接在另一個列表之後的列表。


>>> list_1=[1,2,3,4,5]

>>> list_2=[6,7,8]

>>> list_1.extend(list_2)

>>> print list_1

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


最神奇的的是,列表的連接甚至可以使用運算符+、+=或*。來進行列表操作。如下:


>>> list_1=[1,2,3]

>>> list_2=[4,5,6]

>>> list_3=list_1+list_2

>>> print list_3

[1, 2, 3, 4, 5, 6]

>>> list_1+=list_2

>>> print list_1

[1, 2, 3, 4, 5, 6]

>>> list_4=list_1*3

>>> print list_4

[1, 2, 3, 4, 5, 6, 1, 2, 3, 4, 5, 6, 1, 2, 3, 4, 5, 6]


7、列表的查找:


這個就沒啥技術含量了。。。無非就是按照index找value,按照value找index。

index()這個方法就是根據value找index的方法。返回值就是固定值對應的index。‘


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

>>> print list_1.index(3)     #這句是根據value找index

1

>>> print list_1[3]           #這句是根據index找value

1

>>> 4 in list_1               #這是判斷一個元素是否在列表中

True


8、列表的排序:


列表的排序需要使用List類中的sort()方法。sort方法並不是返回一個列表,是直接修改原來的列表。所以如果不想被修改的話最好有備份下。

sort()方法默認是按照升序排列的:


>>> list_1=[3,4,2,5,1]

>>> list_1.sort()

>>> print list_1

[1, 2, 3, 4, 5]

sort方法有一個可選的參數reverse,reverse是反轉的意思。這個值默認是False,表示升序排序。如果設置爲True,則進行降序排序。


剛纔異想天開,sort方法對於不同的數據類型是怎麼排序的呢?果斷試了一下。。。


>>> list_1=[(9,1),'a','abc',5,4,2,7,8]

>>> list_1.sort()

>>> print list_1

[2, 4, 5, 7, 8, 'a', 'abc', (9, 1)]

事實證明python是先對不同的數據類型排序,然後對每種數據類型再進行分別排序的。


9、列表的反轉:


reverse()方法用於將列表中的元素反向存放:


>>> list_1=[1,2,3,4,5]

>>> list_1.reverse()

>>> print list_1

[5, 4, 3, 2, 1]


總算碼完了,累的手疼了。這樣以後經常來看看應該就不會忘了。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章