Tuple V.S. 串列
在日常的程式設計中,較常用的是串列與字典
Tuple 與串列:相同
Tuple 與串列很像,都是一系列的任意項目
Tuple 與串列:不同
- Tuple 是不可變的
- 定義 Tuple 之後,就無法添加、刪除、更改項目 → 很像常數串列
- Tuple 通常可以用來取代串列,但功能較少,沒有 append()、insert()等等【因為建立後,不能再修改】
串列不能取代 Tuple 原因
- Tuple 佔用的空間較少
- 不會不小心破壞 tuple 的項目
- 可將 tuple 當成字典鍵(在本書p58 字典)
- 可將具名tuple(Named tuple)當成物件的簡化替代品(在本書第六章 p152頁 "具名 Tuple")
- 函式引數是以 tuple 的型式傳入(在本書第四章p92 "函式")
建立 Tuple【使用 ()】
- Python 在印出 tuple 時,會加上括號()
- 不一定要使用括號(),真正定義 tuple 的是元素後的逗號 , ,但使用括號不會有不良引響
- 可以用括號把值包起來,可以讓 tuple 看起來更清楚
空Tuple
- tuple名稱 = ()
- tuple名稱
- ()
>>> empty_tuple = ()
>>> empty_tuple
()
一個元素(每個元素後面加上一個逗號)
要讓 tuple 有一或多個元素,請在每個元素後面加上一個逗號
- tuple名稱 = '元素1',
- tuple名稱
- ('元素1',)
>>> one_marx = 'Groucho',
>>> one_marx
('Groucho',)
多個元素(每個元素後面加上一個逗號,除了最後一個)
如果有多個元素,請依序列舉,除了最後一個元素之外,都要加上一個逗號
- tuple名稱 = '元素1', '元素2', '元素3' 或是</ br> tuple名稱 = ('元素1', '元素2', '元素3')
- tuple名稱
- ('元素1', '元素2', '元素3')
>>> marx_tuple = 'Groucho', 'Chico', 'Harpo'
>>> marx_tuple
('Groucho', 'Chico', 'Harpo')
>>> marx_tuple = ('Groucho', 'Chico', 'Harpo')
>>> marx_tuple
('Groucho', 'Chico', 'Harpo')
Tuple 開箱 = tuple packing(一次指派多個變數)
- tuple名稱 = ('元素1', '元素2', '元素3')
- 變數1, 變數2, 變數3 = tuple名稱
- 變數1
- '元素1'
- 變數2
- '元素2'
- 變數3
- '元素3'
>>> marx_tuple = ('Groucho', 'Chico', 'Harpo')
>>> a, b, c = marx_tuple
>>> a
'Groucho'
>>> b
'Chico'
>>> c
'Harpo'
Tuple 交換值
可以在一個陳述式中,使用 Tuple 來交換值,不需要使用暫時性的變數
- 變數1 = '元素1'
- 變數2 = '元素2'
- 變數1, 變數2 = 變數2, 變數1
- 變數1
- 元素2
- 變數2
- 元素1
>>> password = 'swordfish'
>>> icecream = 'tuttifrutti'
>>> password, icecream = icecream, password
>>> password
'tuttifrutti'
>>> icecream
'swordfish'
tuple() 轉換函式【串列 → tuple()】
- 串列名稱 = ['字串1', '字串2', '字串3']
- tuple(串列名稱)
- ('字串1', '字串2', '字串3')
>>> marx_list = ['Groucho', 'Chico', 'Harpo']
>>> tuple(marx_list)
('Groucho', 'Chico', 'Harpo')