容器型資料型別——元組
Python中容器型的資料型別肯定不止串列一種,接下來我們學習另一種重要的容器型資料型別,它的名字叫元組(tuple),
注意!!!:元組—>不可變的容器 只能讀操作 不能寫操作
元組的基本運用
fruits = ('hello',)#一元組 有幾個元素就是幾元組 只有一個元素是注意后面有逗號
fruits = ('hello') #字串
#字面量語法
fruits1 = ('apple', 'banana', 'grape')
#重復運算
print(fruits1 * 3)
#成員運算 回傳的是布林值
print('apple'in fruits1)
print('grape' not in fruits1)
#合并運算
fruits2 = ('pitaya','litchi')
fruits3 = fruits1 + fruits2
print(fruits3)
#索引和切片 只能進行讀操作 不能進行寫操作
print(fruits3[4],fruits3[-5])
print(fruits3[1:4])
print(fruits3[1:4:2])
print(fruits3[::-1])
# 回圈遍歷元組中的元素
for fruit in fruits:
print(fruit)
print(fruits3.index('apple'))#查找apple的位置
print(fruits3.count('apple'))#查找apple的次數
元組的應用
打包和解包操作,
當我們把多個用逗號分隔的值賦給一個變數時,多個值會打包成一個元組型別;當我們把一個元組賦值給多個變數時,元組會解包成多個值然后分別賦給對應的變數,如下面的代碼所示,
# 打包
a = 1, 10, 100
print(type(a), a) # <class 'tuple'> (1, 10, 100)
# 解包
i, j, k = a
print(i, j, k) # 1 10 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 = 1, 10, 100, 1000
i, j, *k = a
print(i, j, k) # 1 10 [100, 1000]
i, *j, k = a
print(i, j, k) # 1 [10, 100] 1000
*i, j, k = a
print(i, j, k) # [1, 10] 100 1000
*i, j = a
print(i, j) # [1, 10, 100] 1000
i, *j = a
print(i, j) # 1 [10, 100, 1000]
i, j, k, *l = a
print(i, j, k, l) # 1 10 100 [1000]
i, j, k, l, *m = a
print(i, j, k, l, m) # 1 10 100 1000 []
#還有就是
*a, b ,c = 5, 10, 15, 20, 25 #輸出的值為對應的串列
print(a) #[5,10,15]
print(b) #[20]
print(c) #[25]
print('--'*20)
a, *b ,c = 5, 10, 15, 20, 25
print(a) #[5]
print(b) #[10,15,20]
print(c) #[25]
print('--'*20)
a, b ,*c = 5, 10, 15, 20, 25
print(a) #[5]
print(b) #[10]
print(c) #[15,20,25]
交換兩個變數的值
python不像其他語言一樣需要中間變數才能轉換兩個變數的值
如a 與 b 兩個變數交換值 在c語言當中 就需要以下步驟
c = a
b = c
a = b
而python則不需要直接寫成以下格式即可 a賦給b,b賦給a
a, b = b, a
交換三給變數的值同樣用此方法a、b、c的值互換,即b賦給a,c賦給b,a賦給c
a, b, c = b, c, a
串列與元組的轉換
# 將元組轉換成串列
info = ('李四', 170, True, '貴州貴陽')
print(list(info)) # ['李四', 170, True, '貴州貴陽']
# 將串列轉換成元組
fruits = ['apple', 'banana', 'orange']
print(tuple(fruits)) # ('apple', 'banana', 'orange')
總結
? 串列和元組都是容器型的資料型別,即一個變數可以保存多個資料,串列是可變資料型別,元組是不可變資料型別,所以串列添加元素、洗掉元素、清空、排序等方法對于元組來說是不成立的,但是串列和元組都可以進行拼接、成員運算、索引和切片這些操作,就如同之前講到的字串型別一樣,因為字串就是字符按一定順序構成的序列,在這一點上三者并沒有什么區別,我們推薦大家使用串列的生成式語法來創建串列,它很好用,也是Python中非常有特色的語法,
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/291039.html
標籤:python
