軟件工程的目標(biāo)是控制復(fù)雜度,而不是增加復(fù)雜性瞎访。
—— Dr. Pamela Zave
目錄
我們在上一節(jié)介紹了Python 列表list
數(shù)據(jù)結(jié)構(gòu),本節(jié)來介紹一下元組tuple
吁恍。
1扒秸,Python 元組
元組與列表有些相似,它們之間最顯著的不同是践盼,元組一旦定義了以后鸦采,就不能再修改(增加/刪除
其中的元素),而列表可以被任意的改咕幻。
Python 元組有如下特點(diǎn):
- 元組中的元素可以是任意類型的數(shù)據(jù)
- 可使用下標(biāo)和切片訪問元組內(nèi)容
- 元組一點(diǎn)定義渔伯,不能再被修改
2,定義元組
我們已經(jīng)知道了定義列表使用中括號[]
肄程,而定義元組使用小括號()
表示:
>>> t = () # 一個(gè)空的元組
>>> t
()
>>> t = ('a', 1, 3.5, True) # 元組中可以存放任意類型
>>> t
('a', 1, 3.5, True)
只有一個(gè)元素的元組
當(dāng)定義的元組中只有一個(gè)元素時(shí)锣吼,需要在元素后邊加個(gè)逗號:
>>> t = (1,)
>>> t
(1,)
如果沒帶逗號,則這個(gè)小括號()
將不會被認(rèn)為是元組符號:
>>> t = (1) # 相當(dāng)于沒有帶小括號
>>> t
1
>>> t = ('abc')
>>> t
'abc'
3蓝厌,元組的大小
可以使用len()
來查看一個(gè)元組的大行:
>>> t = ('a', 'b', 'c')
>>> len(t) # 長度為 3
3
>>> t = (1, 3)
>>> len(t) # 長度為 2
2
4,訪問元組
可以像訪問列表一樣拓提,使用下標(biāo)
读恃,切片
,和 for 循環(huán)
來訪問元組。
使用下標(biāo)訪問元組
>>> t = ('a', 'b', 'c')
>>> t[0] # 訪問第一個(gè)元素
'a'
>>> t[3] # 下標(biāo)越界
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
IndexError: tuple index out of range
>>> t[-1] # 訪問倒數(shù)第一個(gè)元素
'c'
>>> t[-3] # 訪問倒數(shù)第三個(gè)元素
'a'
>>> t[-4] # 下標(biāo)越界
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
IndexError: tuple index out of range
使用切片訪問元組
>>> t = ('a', 'b', 'c')
>>> t[1:3]
('b', 'c')
>>> t[2:]
('c',)
>>> t[:3]
('a', 'b', 'c')
>>> t[:]
('a', 'b', 'c')
遍歷元組
>>> t = ('a', 'b', 'c')
>>> for i in t:
... print(i)
...
a
b
c
5寺惫,元組不可修改
元組是不可變
類型疹吃,不能對一個(gè)已定義的元組
進(jìn)行以下操作,否則會拋出異常:
- 添加元素
- 修改元素
- 刪除元素
示例:
>>> t = ('a', 'b', 'c')
>>> # 沒有對于元組的添加操作西雀,所以也不用演示
>>>
>>> t[0] = 1 # 修改元素萨驶,拋出異常
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'tuple' object does not support item assignment
>>>
>>> del t[1] # 刪除元素,拋出異常
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'tuple' object doesn't support item deletion
6艇肴,元組運(yùn)算
像列表一樣腔呜,元組也可以進(jìn)行加運(yùn)算
,乘運(yùn)算
再悼,in 運(yùn)算
核畴。
>>> ('a', 'b') + (1, 2) # 加運(yùn)算,得到一個(gè)新的元素
('a', 'b', 1, 2)
>>>
>>> ('a', 'b') * 2 # 乘運(yùn)算帮哈,相當(dāng)于 n 個(gè)元素相加
('a', 'b', 'a', 'b')
>>>
>>> ('a', 'b') * -1 # n 小于等于 0 時(shí)膛檀,得到一個(gè)空元組
()
>>> 'a' in ('a', 'b') # in 運(yùn)算锰镀,判斷一個(gè)元素是否包含在元組中
True
>>> 'a' not in ('a', 'b')
False
7娘侍,元組函數(shù)
通過dir(tuple)
查看元組支持的方法:
['__add__', '__class__', '__contains__',
'__delattr__', '__dir__', '__doc__',
'__eq__', '__format__', '__ge__',
'__getattribute__', '__getitem__',
'__getnewargs__', '__gt__', '__hash__',
'__init__', '__init_subclass__',
'__iter__', '__le__', '__len__',
'__lt__', '__mul__', '__ne__',
'__new__', '__reduce__', '__reduce_ex__',
'__repr__', '__rmul__', '__setattr__',
'__sizeof__', '__str__', '__subclasshook__',
'count', 'index']
可以看到處了魔法方法
,元組類型僅支持兩個(gè)方法:
-
count
方法 -
index
方法
且沒有任意一個(gè)方法用于修改元組泳炉。
1.count
方法
作用:計(jì)算元組
T
中值為value
的個(gè)數(shù)
原型:T.count(value) -> integer
參數(shù):要計(jì)算的元素的值
返回值:個(gè)數(shù)
示例:
>>> t = ['a', 'b', 'c', 'a']
>>> t.count('a')
2
>>> t.count('b')
1
>>> t.count('d')
0
2.index
方法
作用:從元組
T[start:stip]
中查找第一個(gè)值為value
的元素
原型:T.index(value, [start, [stop]]) -> integer
參數(shù) value:查找值為value
的元素
參數(shù) start:元組T
的起始下標(biāo)
參數(shù) stop:元組T
的終止下標(biāo)
返回值:若能找到憾筏,則返回該元素的下標(biāo)
,否則花鹅,拋出ValueError
異常
>>> t = ['a', 'b', 'c']
>>> t.index('b') # 找到了氧腰,返回下標(biāo)
1
>>> l.index('d') # 沒找到,拋出 ValueError 異常
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: 'd' is not in list
(完刨肃。)
推薦閱讀:
Python 簡明教程 --- 6古拴,Python 控制流
Python 簡明教程 --- 7,Python 字符串
Python 簡明教程 --- 8真友,Python 字符串函數(shù)
Python 簡明教程 --- 9黄痪,Python 編碼
Python 簡明教程 ---10,Python 列表