1. 元组是什么? #

point = (10, 20)
config = ("localhost", 8080)

2. 创建元组 #

empty = ()
nums = (1, 2, 3)
one = (42,)              # 单元素必须加逗号,否则是整数 42
also_one = 42,           # 等价,但不推荐省略括号

data = tuple([1, 2, 3])  # 从列表转换

3. 访问元素 #

fruits = ("apple", "banana", "orange")
print(fruits[0], fruits[-1])
print(fruits[1:3])       # ('banana', 'orange')

# fruits[0] = "x"      # TypeError:不可变

4. 常用操作 #

t1 = (1, 2)
t2 = (3, 4)
print(t1 + t2)           # (1, 2, 3, 4)
print(2 in t1)           # False
print(len(t1))           # 2
t = (1, 2, 3, 2, 1)

print(t.count(2))  # 输出 2,表示2在元组中出现了2次
print(t.index(3))  # 输出 2,表示3第一次出现的位置索引为2

5. 元组解包 #

def get_status():
    return 200, "OK"     # 实际返回元组

code, message = get_status()
print(code, message)

# 交换变量
a, b = 10, 20
a, b = b, a

# 忽略部分返回值
name, _, city = ("Alice", 30, "Beijing")

6. 列表 vs 元组:何时用哪个 #

场景 推荐
需要增删改、动态数据 列表 []
固定配置、常量 元组 ()
函数返回多个值 元组(自动)+ 解包
作为字典的键 元组(列表不可哈希)
# 元组可作 dict 的键
locations = {(31.2, 121.5): "上海"}

# 列表不能作键
# {[1, 2]: "x"}   # TypeError

7. 项目开发要点 #