元祖有兩個主要作用:
- 當(dāng)做記錄用的很強大的數(shù)據(jù)類型
- 充當(dāng)不可變的列表
元祖的基本特點
- 大小不可變、元素內(nèi)存地址不可變(如果是列表可以修改內(nèi)容) 的對象
- 有序元素組成的集合,可索引可迭代
元祖的初始化
-
():使用小括號定義空元祖 -
tuple():新建空元祖 -
tuple(iterable):使用一個可迭代對象新建元祖t = tuple() # 新建空元祖 t = tupule(range(10)) # 先新建元祖,再將其賦值給t 不是改變元祖 t 的內(nèi)容,而是重新定義了一個新元祖 t(賦值即重新定義) -
(ele1, ele2, ... , elen):給出所有元素值新建元祖 -
(ele1, ele2, ... , elen) * n:使用*的方式初始化元祖,高效- 單元素的元祖定義:
(1,),數(shù)字后的‘,’不能少,防止與運算符產(chǎn)生歧義
- 單元素的元祖定義:
元祖元素的訪問
- 支持索引
- 正索引:從左到右,從0開始
- 負索引:從右到左,從-1開始
- 索引越界會拋出IndexError異常
- 元祖元素的訪問:
tuple[index]
元祖的查詢
- 指定元素索引查詢(不推薦使用)
-
tuple.index(value [,start [,end]]):在列表中查詢value第一次出現(xiàn)的位置- 可以指定起止索引值,起止索引默認從左到右
- 匹配不到value值,會拋出ValueError異常
- 時間復(fù)雜度:
O(n)
-
- 指定元素計數(shù) ( 不推薦使用)
-tuple.count(value):查詢列表中出現(xiàn)value出現(xiàn)的總次數(shù)
- 時間復(fù)雜度:O(n) - 元素個數(shù)查詢:
-
len(tuple):計數(shù)的方式來查詢 - 時間復(fù)雜度:
O(1)
-
元祖使用建議
- 不要在元祖內(nèi)部使用可變數(shù)據(jù)類型