Python 括号与数据结构速查
通过短例子区分列表、元组、字典和集合,说明逗号、可变性与可哈希性。
阅读设置
四种常见容器
| 语法 | 类型 | 要点 |
|---|---|---|
[1, 2] |
list | 有序、可变、允许重复 |
(1, 2) |
tuple | 有序、不可变容器 |
{"name": "菜牙"} |
dict | 键值映射,键必须可哈希 |
{1, 2} |
set | 不重复元素,无位置索引 |
empty_list = []
empty_tuple = ()
empty_dict = {}
empty_set = set()
single_tuple = (1,)
not_a_tuple = (1) # 整数
also_a_tuple = 1, 2
非空元组主要由逗号形成,而不是只由括号决定。空元组是 ()。{} 总是空字典,空集合必须用 set()。
可变与可哈希
列表可以增删元素;元组不能替换自身的元素引用,但其中引用的可变对象仍可能改变。
record = ([1, 2], "demo")
record[0].append(3)
## hash(record) 会失败:它包含不可哈希的列表
字典键与集合元素要求可哈希,不应简单归纳为“不可变就可以”。字符串、整数及仅包含可哈希元素的元组通常可以;列表和字典不可以。
下标、调用与推导式
items = [10, 20, 30]
first = items[0]
tail = items[1:]
length = len(items)
squares = [x * x for x in range(4)]
unique = {x % 2 for x in range(4)}
mapping = {x: x * x for x in range(4)}
圆括号还用于调用函数或调整表达式优先级;方括号也用于下标和切片。阅读代码时要结合所在位置,不只看括号形状。