1. 程式人生 > >Python學習-第二章 列表和元組

Python學習-第二章 列表和元組

列表和元組

在Python中,最基本的資料結構為序列。
Python內建了多種序列,最常用的兩種:列表和元組。
列表和元組的主要不同在於,列表是可以修改的,而元組不可以。
對於切片的理解:

>>> numbers=[1,2,3,4,5,6,7,8,9,10]
>>> numbers[3:6]
[4, 5, 6]
>>> numbers[-3:-1]
[8, 9]
>>> numbers[-3:0]
[]

你提供兩個索引來指定切片的邊界,其中一個索引指定的元素包含在切片內,但第二個索引指定的元素不包含在切片內。
如果第一個索引指定的元素位於第二個索引指定的元素後面,結果就為空序列。
在步長為負數時,第一個索引必須比第二個索引大。

>>> numbers[8:3:-1]
[9, 8, 7, 6, 5]

可以使用加法運算來拼接序列但是不能拼接列表和字串。

>>> 'Hello'+'world'
'Helloworld'
>>> [1,2,3,4]+[5,6,7,8]
[1, 2, 3, 4, 5, 6, 7, 8]

序列與數x相乘時,將重複這個序列x次來建立一個新的序列。
要將字元列表轉換為字串,可使用下面的表示式.join(somelist)
其中somelist是要轉換的列表。
方法copy複製列表

>>> a=[1,2,3]
>>> b=a
>>> b[1]=4
>>> a
[1, 4, 3]
要讓a和b指向不同的列表,就必須將b關聯到a的副本。
>>> a=[1,2,3]
>>> b=a.copy()
>>> b[1]=4
>>> a
[1, 2, 3]

方法count計算指定的元素在列表中出現了多少次。

>>> x=[[1,2],1,1,[2,1,[1,2]]]
>>> x.count(1)
2
>>> x.count([1,2])
1

方法extend能夠同時吉桑多個值附加到列表末尾,為此可將這些值組成的序列作為引數提供給方法extend。

>>> a=[1,2,3]
>>> b=[4,5,6]
>>> a.extend(b)
>>> a
[1, 2, 3, 4, 5, 6]

方法pop從列表中刪除一個元素(末尾為最後一個元素),並返回這一元素。

>>> x=[1,2,3]
>>> x.pop()
3
>>> x.pop(0)
1
>>> x
[2]

方法reverse按相反的順序排列列表中的元素。

>>> x=[1,2,3]
>>> x.reverse()
>>> x
[3, 2, 1]

方法sort用於對列表就地排序。方法sort接受兩個可選引數:key和reverse。引數key類似於引數cmp:你將其設定為一個用於排序的函式。引數reverse,只需將其指定為一個真值,以指出是否要按相反的順序對列表進行排序。

>>> x=[4,6,1,9,3,7]
>>> x.sort()
>>> x
[1, 3, 4, 6, 7, 9]

>>> x=['aardvark','abalone','acme','add','aerate']
>>> x.sort(key=len)
>>> x
['add', 'acme', 'aerate', 'abalone', 'aardvark']

>>> x=[4,6,2,1,7,9]
>>> x.sort(reverse=True)
>>> x
[9, 7, 6, 4, 2, 1]

如果只包含一個值的元組則必須在它後面加上逗號。若果不加還是返回一個數值。

>>> 42
42
>>> 42,
(42,)

>>> 3*(40+2)
126
>>> 3*(40+2,)
(42, 42, 42)

函式tuple的工作原理與list很像:它將一個序列作為引數,並將其轉換為元組。如果引數已經是元組,就原封不動地返回它。

>>> tuple([1,2,3])
(1, 2, 3)
>>> tuple('abc')
('a', 'b', 'c')