標籤:
現在我們要學習一些Python的資料結構了,本節將主要學習列表(list)的用法
1.list的方法
list.append(x) 在list的末尾添加一個元素
>>> a=[1,2,3,4]
>>> a.append(‘a‘)
>>> a
[1, 2, 3, 4, ‘a‘]
list.extend(L) 在list的末尾添加列表L的所有元素
>>> a=[1,2,3,4]
>>> L=[‘a‘,‘b‘,‘c‘]
>>> a.extend(L)
>>> a
[1, 2, 3, 4, ‘a‘, ‘b‘, ‘c‘]
list.pop([i]) 刪除list索引為i-1的元素,並且返回刪除的元素,如果i未指定,則刪除列表最後一個元素
>>> a=[1,2,3,4]
>>> a.pop()
4
>>> a
[1, 2, 3]
>>> b=[1,2,3,4]
>>> b.pop(2)
3
>>> b
[1, 2, 4]
list.remove(x) 刪除list中值為x的元素,如果list中找不到該元素,則會引發一個錯誤
>>> a=[‘a‘,‘b‘,‘c‘,‘d‘]
>>> a.remove(‘b‘)
>>> a
[‘a‘, ‘c‘, ‘d‘]
>>> a.remove(9)
Traceback (most recent call last):
File "<pyshell#24>", line 1, in <module>
a.remove(9)
ValueError: list.remove(x): x not in list
list.index(x) 返回list中值為x的元素索引,如果list中找不到該元素,則會引發一個錯誤
>>> a=[‘a‘,‘b‘,‘c‘,‘d‘]
>>> a.index(‘c‘)
2
>>> a.index(2)
Traceback (most recent call last):
File "<pyshell#27>", line 1, in <module>
a.index(2)
ValueError: 2 is not in list
list.count(x) 統計並返回list中值為x的元素個數
>>> a=[1,2,3,1,2,3,1]
>>> a.count(1)
3
>>> a.count(3)
2
>>> a.count(‘a‘)
0
list.insert(i,x) 在索引位置i處插入一個元素x,當i大於列表的個數,將在列表的末尾插入元素x
>>> a=[1,2,3,4,5,6]
>>> a.insert(2,‘a‘)
>>> a
[1, 2, ‘a‘, 3, 4, 5, 6]
>>>a.insert(10,‘a‘)
>>> a
[1, 2, ‘a‘, 3, 4, 5, 6, ‘a‘]
list.sort(cmp=None, key=None, reverse=False) 對list進行重新排序,預設是按從小到大的順序排序(參數是可選的,我們將在之後學習參數的用法)
>>> a=[2,1,3,0,7,6,8]
>>> a.sort()
>>> a
[0, 1, 2, 3, 6, 7, 8]
list.reverse() 對list進行反向
>>> a=[2,3,4,1,2,0]
>>> a.reverse()
>>> a
[0, 2, 1, 4, 3, 2]
2.list 切片
引用列表的元素可以使用索引,每個列表的索引從左至右(正向)是從0開始,從右至左(反向)是從-1開始。例如,a=[1,2,3,4,5,6] a的正向和反向索引如所示:
a[0]=1
a[-1]=6
a[-6]=1
a[1]=2
list 可以通過list[x:y]的形式來擷取列表list從索引x到y(不包含y)的子集。
>>> a=[1,2,3,4,5,6]
>>> a[0:2]
[1, 2]
>>> a[:]
[1, 2, 3, 4, 5, 6]
>>> a[0:]
[1, 2, 3, 4, 5, 6]
>>> a[:3]
[1, 2, 3]
>>> a[-1:-4]
[]
如果a[x:y]索引y處的元素在索引x處元素的左邊,那麼將返回一個空列表,如:a[4:-6]=[]
>>> a=[1,2,3,4,5,6]
>>> a[4:-6]
[]
>>> a[5:3]
[]
字串也可以當成一個特殊的列表,如:str=‘python’,我們也可以用切片來截取子字串:str[2:4]=‘th‘
>>> str=‘python‘
>>> str[2:4]
‘th‘
註:針對字串,我們還可以使用加法來為切片擷取的子字串,增加另一個子字串
>>> str=‘python‘
>>> ‘py‘+str[2:4]+‘on‘
‘python‘
>>> str[:]+‘is good‘
‘pythonis good‘
3.嵌套列表
有時候列表的元素也可能是一個列表,這樣就構成了嵌套列表,假如,a=[[1,2,3,4],1,2,3,4] ,a列表的第3個元素是一個子列表
我們可以通過list[x][y]來擷取子列表中的元素:
>>> a=[1,2,[‘a‘,‘b‘,‘c‘,‘d‘],3,4]
>>> a[2][2]
‘c‘
>>> a[2][-1]
‘d‘
4. x for x in list 語句的用法
我們有時候可能需要遍曆列表的元素,那麼我們可以利用for x in list的形式來實現:
>>> a=[1,2,3,4,5]
>>> for x in a:
print x
1
2
3
4
5
我們有時可能想要對列表的每個元素進行處理,例如,我們想對列表的每個元素都加1:
>>> a=[1,2,3,4,5]
>>> [x+1 for x in a]
[2, 3, 4, 5, 6]
如果我們的列表包含了嵌套列表,我們也可以使用這個語句,例如:a=[[1,2,3],[4,5,6],[7,8,9]] ,我們想使子列表中的每個元素都加1:
>>> a=[[1,2,3],[4,5,6],[7,8,9]]
>>> [[sublist[i]+1 for i in range(3) ] for sublist in a]
[[2, 3, 4], [5, 6, 7], [8, 9, 10]]
>>>
假如我們想像二維數組那樣倒置數組,即,我想將 a=[[1,2,3],[4,5,6],[7,8,9]] 變成[[1,4,7],[2,5,8],[3,6,9]],我們可以這樣做:
>>> a=[[1,2,3],[4,5,6],[7,8,9]]
>>> [[ sublist[i] for sublist in a] for i in range(3)]
[[1, 4, 7], [2, 5, 8], [3, 6, 9]]
上面的代碼我們還可以用下面的代碼替換:
>>> x=[[],[],[]]
>>> a=[[1,2,3],[4,5,6],[7,8,9]]
>>> for i in range(3):
for sublist in a:
x[i].append(sublist[i])
>>> x
[[1, 4, 7], [2, 5, 8], [3, 6, 9]]
Python學習筆記 (第5課)