亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 開發 > Python > 正文

Python Tuple數據類型的定義與使用

2023-04-26 12:04:37
字體:
來源:轉載
供稿:網友

Python中的元組(tuple)屬于不可變數據類型,即定義后不能修改,包括新增元素,刪除元素或修改元素的值。

一、tuple數據的定義

tuple中的每一項使用英文半角的逗號進行分隔,并且所有元素值放在一對英文半角的圓括號中“()”,tuple中每一項的數據類型可以不同。

>>> t1 = (1, 2, 3, 1)
>>> print(t1)
(1, 2, 3, 1)
>>> 

從上面的例子中,我們還可以知道,tuple中的元素值可以相同,如上面的例子 t1中有兩個 1.

tuple類型也可以像下面這種方式進行定義:

>>> t2 = 1, 2, 3, None, "Python"
>>> print(t2)
(1, 2, 3, None, 'Python')
>>>

也就是說,在省略圓括號時,Python也把具有逗號分隔的多個值視為tuple類型,同時,None 也可以是tuple的元素。

這個例子也向我們說明了,Python中的tuple可以具有不同數據類型的數據,如上面的數值類型,字符串類型和None類型。

>>> t3 =(('001', '張濤'), ('002', '劉紅', 23))
>>> print(t3)
(('001', '張濤'), ('002', '劉紅', 23))
>>> 

Python中的tuple類型可以為空,即沒有任何元素:

>>> t4 = ()
>>> print(t4)
()
>>>

但是在定義tuple類型時,只有一個元素且沒有逗號時,Python將會把該數據解釋成簡單的數據類型,如:

>>> t5 = (10)
>>> print(t5)
10
>>> print(type(t5))
<class 'int'>
>>>

也就是說,并沒有像用戶期待的輸出(10),同時,通過使用type來判斷t5的類型發現,t5 是int類型的,這與直接使用 t5 = 10的效果相同。

對于其它類型也有相同的效果,下面給出了幾個例子:

>>> t6 = (12.3)
>>> print(t6, type(t6))
12.3 <class 'float'>
>>> t7 = ("Hello")
>>> print(t7, type(t7))
Hello <class 'str'>
>>>

如果tuple中確只有一個元素值,可以使用在其值后加逗號的方式來定義:

>>> t8 = (12.3,)
>>> print(t8, type(t8))
(12.3, ) <class 'tuple'>
>>> t9 = ('Hello', )
>>> print(t9, type(t9))
('Hello', ) <class 'tuple'>
>>>

二、訪問tuple的元素

我們可以使用tuple元素的索引來訪問元素值,其索引從0開始到tuple的長度-1(即元素個數-1)。訪問的語法格式如下:

tuple_name[索引值]

在使用時索引值不能越界,即當以正數索引訪問時,索引的最大值為:元素個數 - 1,超過此值將會引發 IndexError的錯誤;當以負數索引進行訪問時,索引的最小值是: -元素個數,比此值再小時也會引發 IndexError 錯誤。

t10 = (1, 2, 3, 4, 5)
print(t10[0])  # 輸出 1
print(t10[2])  # 輸出 3
print(t10[4])  # 輸出 5
print(t10[5])  # 索引越界,引發異常
print(t10[-1]) # 輸出 5
print(t10[-4]) # 輸出 2
print(t10[-5]) #輸出 1
print(t10[-6]) #索引越界,引發異常

以上在Python3.8.2中的輸出如下:

訪問tuple中的元素

從以上可以看出,索引不在有效范圍內時將引發:IndexError 異常,告知:tuple index out of range(元組索引超出范圍)。

下面再介紹一下嵌套元組的訪問方法:

>>> t11 = (1, 2, (3, 4), (5, 6, 7))
>>> t11[0]
1
>>> t11[2][0]
3
>>> t11[3][2]
7
>>> t11[-2][1]
4
>>> t11[-2][-2]
3
>>> t11[3][-2]
6
>>>

從以上各例可以看出,我們可以靈活使用正數索引和負數索引來訪問元組中不同的元素值。

三、元組的切片操作

我們可以使用切邊功能創建一個子元組,即通過切片獲取元組中的部分值。切片的基本語法格式為:

tuple_name[ start : end : step ]

  • start:切片開始時的索引,默認為0;
  • end:切片結束位置的索引,默認為元組長度-1;
  • step:步長,即每 step 獲取一個元素值,默認為1。

根據實際操作情況,三個索引都可以有選擇的使用。

下面使用具體的例子來介紹具體使用方法:

>>> t = (1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
>>> t1 = t[2 : ]  # 截取從索引2開始到最后的所有元素值
>>> print(t1)
(3, 4, 5, 6, 7, 8, 9, 10)
>>> t2 = t[ :7]  #從開頭到索引7停止,注意不含 索引7處的值
>>> print(t2)
(1, 2, 3, 4, 5, 6, 7)
>>> t3 = t[2 : 8]  # 從索引2開始到索引8停止,不含8處的值
>>> print(t3)
(3, 4, 5, 6, 7, 8)
>>> t4 = t[ 3 : 9 : 2]  # 從索引3到索引9 每2個取1個值
>>> print(t4)
(4, 6, 8)
>>> t5 = t[-5: ]  # 從后端進行索引
>>> print(t5)
(6, 7, 8, 9, 10)
>>> t6 = t[ : -5] # 截止到索引-5,不含-5
>>> print(t6)
(1, 2, 3, 4, 5)
>>> t7 = t[ -8 : -3 ]  # 從索引 -8 截取到 -3
>>> print(t7)
(3, 4, 5, 6, 7)
>>> t8 = t[-8 : -3 : 2] # 從索引 -8 截取到 -3,每2個取1個
>>> print(t8)
(3, 5, 7)
>>> t9 = t[-3 : -8 : -2]  # 從索引-3 開始到索引-8,從后往前每2截取1
>>> print(t9)
(8, 6, 4)
>>> t10 = t[9 : 2 : -2] # 從索引9到索引2,從后往前每2截1
>>> print(t10)
(10, 8, 6, 4)
>>> 

以上各例演示了實際中可能用到的切片方式,特別需要注意:

(1)start 處的值包含在截取結果中,end 指定的是截止位置,end 處的值不含在截取結果中;

(2)在不指定 step 時,start 指定的索引只有在邏輯上處于end的左側或與end相等時才會截取到值;

(2)step指定的截取步,可以理解為 每 step 個截取1個,不能理解為每隔 step 進行截取;

(3)step為正值時是從左往右進行截取,start邏輯上必須在end的左側才會截取到結果;

(4)step為負值時是從右往左截取,start邏輯上必須在end的右側才會截取到結果,如例子中的 t9和t10.

(5)start ,endstep 的值都可以省略,省略時,start = 0, end = len(t) - 1, step = 1,但是冒號不能省,

如下幾個例子:

>>> t11 = t[ : ]
>>> print(t11)
(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
>>> t11 = t[ : : ]
>>> print(t11)
(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
>>> t11 = t[]  # 企圖連冒號都要省
SyntaxError: invalid syntax
>>>

當把冒號都省略時會出現語法錯誤:無效的語法格式

以上各例在Python3.8.2中的運行情況如下圖所示:

Python 元組切片

關于Python中索引的使用方式,大家可以參照這篇文章《Python中創建列表、訪問列表、刪除列表等操作方法》里關于索引的示意圖與說明。Python中關于序列類型的索引方法是一致的。

四、元組不能增加元素、修改元素或刪除元素操作

因為元組tuple屬于不可變類型,其值無法像列表那樣進行增加、修改或刪除。

>>> t = (1, 2, 3, 4)
>>> t[1] = 10  # 企圖修改索引1處的值
Traceback (most recent call last):
    File "<pyshell#30>", line 1, in <module>
        t[1] = 10
TypeError: 'tuple' object does not support item assignment

>>> 

從上例可以看出,企圖修改元組的值是不允許的,給出 TypeError 錯誤。

但是如果元組中的元素是可變類型的話,我們仍可以修改這個元素的值,如下例:

>>> t = (1, 2, ['apple', 'orange', 'banana'], 3)
>>> t
(1, 2, ['apple', 'orange', 'banana'], 3)
>>> t[2][1] = 'berry'
>>> t
(1, 2, ['apple', 'berry', 'banana'], 3)
>>> t[2].remove('banana')
>>> t
(1, 2, ['apple', 'berry'], 3)
>>> 

五、刪除元組的定義

使用 del 命令可以刪除元組的定義。

>>> t = (1, 2, 3)
>>> print(t)
(1, 2, 3)
>>> del t
>>> print(t)
Traceback (most recent call last):
    File "pyshell#40", line 1, in <module>
        t
NameError: name 't' is not defined

>>> 

從上例可以看出,使用 del 命令刪除元組 t 的定義后,企圖再次使用時,將會產生 NameError 錯誤,即名稱 't' 未定義。

六、元組中的運算符

1、元組的連接

使用 + 運算符可以把 2 個或多個元組連接成一個新的元組。

>>> t1 = (1, 2, 3)
>>> t2 = (4, 5, 6, 7)
>>> t = t1 + t2
>>> print(t)
(1, 2, 3, 4, 5, 6, 7)
>>>

2、元組的重復運算

使用 * 可以把元組重復若干次后生成一個新的元組。

>>> t = (1, 2, 'apple', 3)
>>> t1 = t * 3
>>> print(t1)
(1, 2, 'apple', 3, 1, 2, 'apple', 3, 1, 2, 'apple', 3)
>>> 

3、成員檢測運算

使用 "in" 運算符可以檢測一個元組中是否包含某個元素值,也可以使用 "not in" 運算符檢測某個元素值是否不在一個元組中。

>>> t = ('python', 'C#', 'HTML', 'CSS', 'Java', 'R')
>>> print('python' in t)
True
>>> print('HTML' not in t)
False
>>> print('PHP' in t)
False
>>> 

七、迭代輸出元組中的值

我們可以使用for循環迭代輸出元組中的每個值。

langs = ("Python", "R", "PHP", "Java")
for e in langs:
    print(e)

for v in reversed(langs):
    print(v

第1個for循環正常順序輸出每個元組中的值,第2個for循環使用了reversed函數,把元組反轉后輸出。

輸出結果:

Python
R
PHP
Java
Java
PHP
R
Python

八、可以運用元組中的一些函數

1、len()函數

len()函數可以獲取元組的長度,即元組中值的個數。

>>> t1 = (1, 2, "python")
>>> print(len(t1))
3
>>> t2 = (1, 2, ["python", "R", "C#"], 'apple')
>>> print(len(t2))
4
>>>
 

2、count()函數

count()函數可以統計元組中某元素的個數。

>>> t = ("A", "B", "A", "C", "D", "A")
>>> icnt = t.count("A")
>>> print(icnt)
3
>>> 

3、index()函數

index()函數返回元組中某個范圍內某元素第一次出現的位置索引。

index()函數的語法格式如下:

tup_name.index( x, start, end)

>>> t = (1, 2, 3, 1, 3, 4, 5)
>>> t.index(3)
2
>>> t.index(3, 3)
4
>>> t.index(3, 3, 5)
4
>>> t.index(3, -3)
4
>>> 

九、使用tuple()函數把其他序列值轉換為元組

我們可以只用tuple()函數來創建一個元組??梢园蚜斜?,字符串等作為其參數來創建元組。

>>> lst1 = [1, 2, 3] # 列表
>>> t1 = tuple(lst1) # 使用列表來創建元組
>>> print(t1)
(1, 2, 3)
>>> s = "Python" # 字符串
>>> t2 = tuple(s) # 使用字符串來創建元組
>>> print(t2)
('P', 'y', 't', 'h', 'o', 'n')
>>> r = range(1, 5) # 生成范圍值
>>> t3 = tuple(r) # 使用范圍值來創建元組
>>> print(t3)
(1, 2, 3, 4, 5)
>>>

Python tuple類型詳解

 以上是關于tuple類型的全部內容,如有什么疑問請留言評論。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
日韩a**站在线观看| 亚洲国产欧美一区二区三区久久| 亚洲一区二区三区在线视频| 夜夜躁日日躁狠狠久久88av| 97超级碰碰碰| 亚洲自拍偷拍福利| 中文字幕一区二区精品| 这里只有精品丝袜| 亚洲成人中文字幕| 欧美精品在线免费| 国产欧美亚洲精品| 国产精品中文字幕久久久| 精品无人区乱码1区2区3区在线| 欧美体内谢she精2性欧美| 最近中文字幕mv在线一区二区三区四区| 国产精品久久久久久久久久新婚| 久久久精品在线观看| 精品性高朝久久久久久久| 国产精品日韩欧美综合| www.欧美免费| 日本高清不卡的在线| 国产精品h片在线播放| 久久精品亚洲热| 亚洲欧美制服综合另类| 成人国产在线激情| 久久久久久成人| 亚洲精品美女在线观看| 国产精品99久久久久久久久久久久| 中文字幕无线精品亚洲乱码一区| 精品亚洲一区二区三区| 日韩欧美主播在线| 久久国产精品影视| 精品国产一区二区三区久久久| 亚洲欧美国产精品| 欧美日韩国产精品一区二区不卡中文| 欧洲精品在线视频| 精品国产依人香蕉在线精品| 成人av在线天堂| 日产日韩在线亚洲欧美| 欧美一级在线亚洲天堂| 亚洲欧美在线播放| 亚洲欧美国产精品专区久久| 成人午夜激情网| 亚洲精品720p| 日韩av大片免费看| 亚洲综合第一页| 亚洲欧美国产精品久久久久久久| 亚洲第一色中文字幕| 久久久久久久久久久av| 亚洲激情视频在线观看| 国色天香2019中文字幕在线观看| 久久久久久久激情视频| 亚洲精品v欧美精品v日韩精品| 精品亚洲夜色av98在线观看| 国产精品久久久久久久久久小说| 伊人久久精品视频| 欧美日韩成人在线播放| 国产精品美女av| 91精品视频一区| 欧美电影院免费观看| 国产日韩欧美成人| 97av在线视频| 伊人久久久久久久久久久| 亚洲天堂免费观看| 精品av在线播放| 日韩中文字幕在线| 欧美日韩国产一区在线| 欧美性xxxx极品hd欧美风情| 91热福利电影| 欧美一级淫片videoshd| 色狠狠av一区二区三区香蕉蜜桃| 91香蕉嫩草神马影院在线观看| 91禁国产网站| 在线观看中文字幕亚洲| xvideos国产精品| 蜜臀久久99精品久久久无需会员| 欧美美女18p| 岛国av在线不卡| 久久久久久久久久国产精品| 成人黄色av网站| 亚洲国产成人在线播放| 亚洲欧洲日韩国产| 欧美精品videosex性欧美| 亚洲欧美激情精品一区二区| 不卡中文字幕av| 国产日产欧美a一级在线| 夜夜嗨av色一区二区不卡| 国产精品一区二区久久国产| 激情成人中文字幕| 欧美在线视频播放| 久久视频中文字幕| 日韩综合视频在线观看| 国产成人一区二区在线| 在线播放日韩欧美| 欧美肥婆姓交大片| 日韩在线资源网| 午夜精品久久久久久久久久久久| 欧美俄罗斯乱妇| 亚洲最新中文字幕| 成人免费黄色网| 亚洲国产古装精品网站| 欧美日韩国产在线播放| 91久久久久久久久久| 国产a∨精品一区二区三区不卡| 日韩精品视频观看| 成人羞羞国产免费| 欧美成人午夜激情视频| 亚洲自拍欧美另类| 欧美综合在线第二页| 欧美性极品xxxx做受| 亚洲男人的天堂网站| 91成品人片a无限观看| 日韩美女激情视频| 性夜试看影院91社区| 国产视频丨精品|在线观看| 45www国产精品网站| 一区二区国产精品视频| 亚洲午夜av电影| 国产精品v片在线观看不卡| 久久偷看各类女兵18女厕嘘嘘| 国产精品视频一区二区高潮| 国产日韩在线播放| 97超碰蝌蚪网人人做人人爽| 欧美视频中文字幕在线| 欧美成人精品h版在线观看| 国内精品久久久久久久| 法国裸体一区二区| 国产精品中文字幕久久久| 色视频www在线播放国产成人| 成人女保姆的销魂服务| 中文字幕亚洲激情| 欧美日韩午夜激情| 亚洲日韩第一页| 精品一区二区亚洲| 精品久久久久久亚洲精品| 中文字幕一区电影| 国产手机视频精品| 91在线观看免费高清完整版在线观看| 在线不卡国产精品| 欧美日韩精品在线| 国产91色在线|| 国产精品美女午夜av| 国产盗摄xxxx视频xxx69| 欧美日韩国产精品一区二区三区四区| 精品自在线视频| 久久精品中文字幕一区| 国产亚洲一区精品| 成人黄色免费看| 九九精品在线播放| 韩日欧美一区二区| 亚洲日本成人网| 亚洲精品视频在线观看视频| 性色av一区二区三区免费| 国产97免费视| 亚洲女人天堂色在线7777| 精品国内产的精品视频在线观看| 国产视频久久久| 国产精品久久久久久超碰| 日韩亚洲欧美成人| 亚洲男人的天堂在线| 亚洲成人亚洲激情| 成人网页在线免费观看| 欧美韩日一区二区| 亚洲精品永久免费|