我們知道鏈表和字符串有很多通用的屬性,例如索引和切割操作。它們是序列類型(參見?_typesseq_)中的兩種。因為 Python 是一個在不停進化的語言,也可能會加入其它的序列類型,這里介紹另一種標準序列類型:?_元組_?。
一個元組由數個逗號分隔的值組成,例如:
~~~
>>> t = 12345, 54321, 'hello!'
>>> t[0]
12345
>>> t
(12345, 54321, 'hello!')
>>> # Tuples may be nested:
... u = t, (1, 2, 3, 4, 5)
>>> u
((12345, 54321, 'hello!'), (1, 2, 3, 4, 5))
>>> # Tuples are immutable:
... t[0] = 88888
Traceback (most recent call last):
File "", line 1, in
TypeError: 'tuple' object does not support item assignment
>>> # but they can contain mutable objects:
... v = ([1, 2, 3], [3, 2, 1])
>>> v
([1, 2, 3], [3, 2, 1])
~~~
如你所見,元組在輸出時總是有括號的,以便于正確表達嵌套結構。在輸入時可以有或沒有括號,不過經常括號都是必須的(如果元組是一個更大的表達式的一部分)。不能給元組的一個獨立的元素賦值(盡管你可以通過聯接和切割來模擬)。還可以創建包含可變對象的元組,例如鏈表。
雖然元組和列表很類似,它們經常被用來在不同的情況和不同的用途。元組有很多用途。例如 (x, y) 坐標對,數據庫中的員工記錄等等。元組就像字符串,不可改變。
一個特殊的問題是構造包含零個或一個元素的元組:為了適應這種情況,語法上有一些額外的改變。一對空的括號可以創建空元組;要創建一個單元素元組可以在值后面跟一個逗號(在括號中放入一個單值不夠明確)。丑陋,但是有效。例如:
~~~
>>> empty = ()
>>> singleton = 'hello', #
>>> len(empty)
0
>>> len(singleton)
1
>>> singleton
('hello',)
~~~
語句?t?=?12345,?54321,?'hello!'?是?_元組封裝_?(tuple packing)的一個例子:值?12345?,?54321?和'hello!'?被封裝進元組。其逆操作可能是這樣:
`>>> x, y, z = t`
這個調用等號右邊可以是任何線性序列,稱之為?_序列拆封_?非常恰當。序列拆封要求左側的變量數目與序列的元素個數相同。要注意的是可變參數(multiple assignment )其實只是元組封裝和序列拆封的一個結合。
- Python 入門指南
- 1. 開胃菜
- 2. 使用 Python 解釋器
- 2.1. 調用 Python 解釋器
- 2.2. 解釋器及其環境
- 3. Python 簡介
- 3.1. 將 Python 當做計算器
- 3.2. 編程的第一步
- 4. 深入 Python 流程控制
- 4.1. if 語句
- 4.2. for 語句
- 4.3. range() 函數
- 4.4. break 和 continue 語句, 以及循環中的 else 子句
- 4.5. pass 語句
- 4.6. 定義函數
- 4.7. 深入 Python 函數定義
- 4.8. 插曲:編碼風格
- 5. 數據結構
- 5.1. 關于列表更多的內容
- 5.2. del 語句
- 5.3. 元組和序列
- 5.4. 集合
- 5.5. 字典
- 5.6. 循環技巧
- 5.7. 深入條件控制
- 5.8. 比較序列和其它類型
- 6. 模塊
- 6.1. 深入模塊
- 6.2. 標準模塊
- 6.3. dir() 函數
- 6.4. 包
- 7. 輸入和輸出
- 7.1. 格式化輸出
- 7.2. 文件讀寫
- 8. 錯誤和異常
- 8.1. 語法錯誤
- 8.2. 異常
- 8.3. 異常處理
- 8.4. 拋出異常
- 8.5. 用戶自定義異常
- 8.6. 定義清理行為
- 8.7. 預定義清理行為
- 9. 類
- 9.1. 術語相關
- 9.2. Python 作用域和命名空間
- 9.3. 初識類
- 9.4. 一些說明
- 9.5. 繼承
- 9.6. 私有變量
- 9.7. 補充
- 9.8. 異常也是類
- 9.9. 迭代器
- 9.10. 生成器
- 9.11. 生成器表達式
- 10. Python 標準庫概覽
- 10.1. 操作系統接口
- 10.2. 文件通配符
- 10.3. 命令行參數
- 10.4. 錯誤輸出重定向和程序終止
- 10.5. 字符串正則匹配
- 10.6. 數學
- 10.7. 互聯網訪問
- 10.8. 日期和時間
- 10.9. 數據壓縮
- 10.10. 性能度量
- 10.11. 質量控制
- 10.12. “瑞士軍刀”
- 11. 標準庫瀏覽 – Part II
- 11.1. 輸出格式
- 11.2. 模板
- 11.3. 使用二進制數據記錄布局
- 11.4. 多線程
- 11.5. 日志
- 11.6. 弱引用
- 11.7. 列表工具
- 11.8. 十進制浮點數算法
- 12. 接下來?
- 13. 交互式輸入行編輯歷史回溯
- 13.1. 行編輯
- 13.2. 歷史回溯
- 13.3. 快捷鍵綁定
- 13.4. 其它交互式解釋器
- 14. 浮點數算法:爭議和限制
- 14.1. 表達錯誤
- 15. 附錄
- 15.1. 交互模式