元組
- 定義:元組(tuple)是特殊的序列類型,元組可以了解成一個隻讀的清單,隻能擷取資料但不能對元組裡面的資料進行修改。
- 建立元組表現形式:使用
和,
來表示,如:()
# 格式
(資料1,資料2,資料3……)
# 例子
('red', 'blue', 'green')
(2, 4, 6, '字元串', ['清單', 1], True, (1,2))
# 定義空元組
my_tuple1 = ()
my_tuple2 = tuple()
- 注意: 如果元組裡面隻有一個資料,那麼這資料後面的逗号
不能省略,如:,
(資料1,)
- 優點:一旦被建立就不能修改,使得代碼更安全
- 注意:如果說元組資料一定不能改變是錯的,因為元組中如果有清單、字典等可變元素,這些元素是可以變化的。
tuple1 = (1, 3, 5, [2, 4, 6])
tuple1[3][0] = 777
-------------------------------
tuple1 = (1, 3, 5, [777, 4, 6])
通路方式和字元串、清單基本相同
- 元組隻有查詢操作
- 下标、切片、
方法(沒有find)tuple.index('xxx')
- 一般用于表達固定資料項、函數多傳回值等情況、最常見的使多個資料格式化輸出的時候
print('%s,%s' % (x, y))
拆分(拆包)
- 注意:變量和value的數量必須一一對應
x, y, ... = (value1,value2, ...) # 元組拆包
x, y, ... = [value1, value2, ...] # 清單拆包
x, y, z, ... = '字元串...' # 字元串拆包
x, y, ... = {k1: v1, k2: v2, ...} # 字典拆包,直接拆獲得的是key
x, y, ... = {k1: v1, k2: v2, ...}.values() # 這樣獲得的是value
拆包的使用場景
一、接收傳回值
def show():
return 1, 2, 3 # 其實是元組(1,2,3),但Python的PEP8要求簡寫
# 對傳回值進行了拆包,其實就是對元組進行了拆包
a, b, c = show()
print(a, b, c)
二、交換變量的值
# 交換變量值原始的方法,借助第三個變量
a = 1
b = 2
c = a
a = b
b = c
print(f'交換後a={a}, b={b}')
# 利用拆包交換變量的值
a = 1
b = 2
a, b = b, a
print(f'交換後a={a}, b={b}')
三、不定長參數、關鍵字參數傳參
my_tuple = (1, 2)
my_dict = {"a": 1, "b": 2}
# 對元組進行拆包(*my_tuple),表示把元組裡面的每一個元素按照位置參數的方式進行傳參
# 對字典進行拆包(**my_dict),表示把字典裡面的每一個鍵值對按照關鍵字方式進行傳參
show_info(*my_tuple, **my_dict)
# 注意: 對元組和字典進行拆包(*my_tuple, **my_dict),不能單獨使用,
# 隻能結合帶有不定長參數的函數使用
特點
- 元組中的元素可以是不同類型的
- 元組中的元素存在先後關系,可通過索引通路元組中的元素
清單與元組
- 元組是不可變的,清單是可變的;
- 元組通常由不同的資料組成,清單通常是由相同類型的資料組成(隻是習慣);
- 元組表示的是結構,清單表示的是順序;