1. 程式人生 > >Python 元組、列表

Python 元組、列表

python 元組 兩個 最小 下標 成員 print ins 固定 加法

Python中,最常用的數據結構就是序列了。序列有以下幾種:元組,列表,字符串等。註:代碼都是在IDE中編輯的,沒有用交互式環境。

一、元組(tuple)

元組其實有點類似C++中的數組,即一旦指定了內容,那麽這個元組就固定下來不能變了。不過並不是絕對不能改變,如果一個元組成員是一個列表,那麽這個列表的修改操作是允許的。另外,Python是動態語言,因此元組中各個成員並不需要是同一種類型:

a = (1, 3, 5, [7, 9])
# a[1] = 11 錯誤,不允許修改元組的成員
a[3].append(11)# 正確
print a
(1, 3, 5, [7, 9, 11])

大部分時候,列表可以代替元組,不過,元組可以作為字典中的key,而列表不可以;另外,元組是許多內建函數的返回類型

二、列表(list)

列表與元組非常相似,他們支持的操作也有很多相似的地方,具體功能我們在一部分再介紹。列表用[ ]來表示,不同之處在於,列表可以隨意修改元素以及添加元素:

a = [1, 3, 5, [7, 9]]
a[1] = 111
a[3].append(11)
print a

[1, 111, 5, [7, 9, 11]]

三、序列支持的操作

1、索引

類似於C++中的數組和std::list<T>,序列都是線性結構,支持使用下標來進行索引:

a = [1, 3, 5]
b = (2, 4 ,6)
c = ‘this is a string‘
print a[1], b[1], c[1], c[-1]

3 4 h g

同其他語言一樣,下標是從0開始計的,即第一個元素的索引為0。此外,索引可以為負數,即從右側開始計算。

2、分片

分片操作支持每次訪問一定區間的元素,以及指定訪問的步長:

a = [1, 3, 5, 7, 9]
b = (2, 4, 6, 8, 10)
print a[1:3], b[0:4:2] #註意,左閉右開區間

同樣,分片操作也可以是負數,不過要註意步長是否匹配。

3、加法和乘法

加法會連接兩個類型相同的序列(不能是元組),乘法會賦值N次該序列,並返回一個新的序列:

a = [1, 3, 5, 7, 9]
b = [2, 4, 6, 8, 10]
print a + b, \n, a * 2

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

4、長度、最大最小值

len()函數返回元素的個數,max()和min()函數返回。對於長度,他們都調用類內定義的__len__方法。

四、列表支持的操作

簡單點說,列表主要支持的就是添加/刪除元素,以及索引、統計、排序等操作:

a = [1, 3, 11, 13, 9, 7, 5]
b = [22, 44]
a.append(111) # a = [1, 3, 11, 13, 9, 7, 5, 111]
a.count(1) # 1
a.extend(b) # a = [1, 3, 11, 13, 9, 7, 5, 111, 22, 44]
a.index(3) # 1
a.insert(1, 666) # a = [1, 666, 3, 11, 13, 9, 7, 5, 111, 22, 44]
a.pop() # a = [1, 666, 3, 11, 13, 9, 7, 5, 111, 22]
a.remove(5) # a = [1, 666, 3, 11, 13, 9, 7, 111, 22]
a.reverse()# a = [22, 111, 7, 9, 13, 11, 3, 666, 1]
a.sort() # a = [1, 3, 7, 9, 11, 13, 22, 111, 666]

Python 元組、列表