文章目錄
- 一、元組的定義和使用
- 1. 元組的定義
- 2. 元組的創建方法
- 3. 元組的運算子
- 4. 元組的遍歷
- 二、元組的應用場景
- 1.打包和解包操作,
- 2.交換兩個變數的值
- 三、元組與串列相互轉換
上一篇文章為大家講解了Python中的串列,它是一種容器型資料型別,我們可以通過定義串列型別的變數來保存和操作多個元素,當然,Python中容器型的資料型別肯定不止串列一種,接下來我們為大家講解另一種重要的容器型資料型別,它的名字叫元組(tuple),
一、元組的定義和使用
1. 元組的定義
在Python中,元組也是多個元素按照一定的順序構成的序列,元組和串列之間的主要區別是元組不能像串列那樣改變元素的值,可以簡單地理解為**“只讀串列”,
元組和串列的不同之處在于,元組是不可變型別**,這就意味著元組型別的變數一旦定義,其中的元素不能再添加或洗掉,而且元素的值也不能進行修改, 定義元組通常使用()字面量語法,也建議大家使用這種方式來創建元組,
元組的定義語法:
# 變數名 = (資料1, 資料2, 資料3)
2. 元組的創建方法
(1)字面量語法
定義元組通常使用()字面量語法,也建議大家使用這種方式來創建元組,
例如:
tuple1 = (2, 5, 9)
tuple2 = ('apple', 'watermelon', 'grape')
# 創建一個空元組
tup = ()
注意:
若要創建只包含一個值的元組,需要再該值后加一個,,否則()就不是代表元組的字面量語法,而是改變運算優先級的圓括號,例如:
tuple3 = (15)
print(type(tuple3)) # <class 'int'>
tuple4 = (15,)
print(type(tuple4)) # <class 'tuple'>
3. 元組的運算子
元組和串列的運算子基本相同,具體看以下例子:
tup1 = ('中國',)
tup2 = ('巴西', '俄羅斯', '法國', '英國', '加拿大')
# 重復運算
print(tup1 * 3) # ('中國', '中國', '中國')
# 合并運算
tup3 = tup1 + tup2
print(tup3) # ('中國', '巴西', '俄羅斯', '法國', '英國', '加拿大')
# 成員運算
print('法國' in tup2) # True
print('中國' not in tup2) # True
# 查看元組中元素的數量
print(len(tup3)) # 6
# 索引和切片
# 偏移量,從零開始,輸出索引為2的值;負數:從右到左,輸出索引為-1的值
print(tup2[2], tup3[-1]) # 法國 加拿大
# 切片提取部分,索引0到3的值,索引1到2的值
print(tup2[0: 4]) # ('巴西', '俄羅斯', '法國', '英國')
print(tup2[1: 3]) # ('俄羅斯', '法國')
# 元組整體切片,從索引為-1倒著輸出;整體切片,步長為3
print(tup2[::-1]) # ('加拿大', '英國', '法國', '俄羅斯', '巴西')
print(tup3[::3]) # ('中國', '法國')
4. 元組的遍歷
每次回圈都將 從元組中順序的讀取出來的資料放在臨時變數中,然后執行相同的操作,使用for回圈進行迭代遍歷,
示例如下:
# 回圈遍歷元組中的元素
tup4 = (1, 5, 9, 6)
for num in tup4:
print(num, end=' ') # 1 5 9 6
二、元組的應用場景
1.打包和解包操作,
打包就是當我們把多個用逗號分隔的值賦給一個變數時,多個值會打包成一個元組型別;當我們把一個元組賦值給多個變數時,元組會解包成多個值然后分別賦給對應的變數就是解包,如下面的代碼所示,
# 打包
a = 1, 10, 100
print(type(a), a) # <class 'tuple'> (1, 10, 100)
# 解包
i, j, k = a
print(i) # 1
print(j) # 10
print(k) # 100
注意:
在解包時,如果解包出來的元素個數和變數個數不對應,會引發ValueError例外,錯誤資訊為:too many values to unpack(解包的值太多)或not enough values to unpack(解包的值不足),a = 1, 10, 100, 1000 # i, j, k = a # ValueError: too many values to unpack (expected 3) # i, j, k, l, m, n = a # ValueError: not enough values to unpack (expected 6, got 4)有一種解決變數個數少于元素的個數方法,就是使用星號運算式,以在變數前邊添加一個*,這樣變數將會獲取元組中所有剩余的元素,用星號運算式修飾的變數會變成一個串列,串列中有0個或多個元素,在解包語法中,星號運算式只能出現一次,例如
a, *_, c = 5, 10, 15, 20, 25 print(a) # 5 print(c) # 25 a, b, *c = 'hello' print(a) # h print(b) # e print(c) # ['l', 'l', 'o'] a, b, *c = 5, 10 print(a) # 5 print(b) # 10 print(c) #[]
2.交換兩個變數的值
交換兩個變數的值是編程語言中的一個經典案例,在很多編程語言中,交換兩個變數的值都需要借助一個中間變數才能做到,如果不用中間變數就需要使用比較晦澀的位運算來實作,在Python中,交換兩個變數a和b的值只需要使用如下所示的代碼,
a, b = b, a
同理,如果要將三個變數a、b、c的值互換,即b賦給a,c賦給b,a賦給c,也可以如法炮制,
a, b, c = 15, 25, 35
a, b, c = b, c, a
print(a,b,c) # 25 35 15
三、元組與串列相互轉換
Python中的元組和串列是可以相互轉換的,我們可以通過下面的代碼來做到,
# 將元組轉換成串列
tup = ('watermelon', 2.5, True, '寧夏')
print(list(tup)) # ['watermelon', 2.5, True, '寧夏']
# 將串列轉換成元組
fruits = ['apple', 'banana', 'orange']
print(tuple(fruits)) # ('apple', 'banana', 'orange')
以上就是元組(tuple)的基本知識,Get It!

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/291643.html
標籤:其他
