列表:一排带编号的格子
一个变量只能装一个东西。要装一堆,用列表(list):
scores = [88, 92, 79]
names = ["小明", "小红"]
mixed = [1, "二", 3.0, True] # 允许混装,但通常别这么干
按下标取值,从 0 开始数:
print(scores[0]) # 88 第一个
print(scores[2]) # 79 第三个
print(scores[-1]) # 79 倒数第一个,负数从右边数
print(len(scores)) # 3 一共几个
下标从 0 开始意味着最后一个元素的下标是 len - 1。写 scores[3] 会报 IndexError: list index out of range——越界了。
增删改查
scores = [88, 92, 79]
scores.append(100) # 末尾追加 → [88, 92, 79, 100]
scores[0] = 90 # 改第一个 → [90, 92, 79, 100]
scores.remove(79) # 删掉值为 79 的第一个 → [90, 92, 100]
del scores[0] # 按下标删 → [92, 100]
print(92 in scores) # True,判断存不存在
常用统计:
nums = [3, 1, 4, 1, 5]
print(sum(nums)) # 14
print(max(nums)) # 5
print(min(nums)) # 1
print(sorted(nums)) # [1, 1, 3, 4, 5],返回新列表,原列表不变
切片:取一段
nums = [0, 1, 2, 3, 4, 5]
print(nums[1:4]) # [1, 2, 3] 还是左闭右开
print(nums[:3]) # [0, 1, 2] 从头开始
print(nums[3:]) # [3, 4, 5] 一直到尾
字典:用名字取值,不用编号
列表适合"一排同类的东西"。但要描述一个东西的多个属性,用编号就很难受了——你记不住 user[2] 是什么。这时候用字典(dict):
user = {
"name": "小明",
"age": 18,
"city": "杭州"
}
print(user["name"]) # 小明
user["age"] = 19 # 改
user["email"] = "a@b.c" # 加(键不存在就是新增)
字典是一堆 键: 值 对。键通常用字符串,值什么都行。
取一个不存在的键会报 KeyError。想安全一点用 get:
print(user.get("phone")) # None,不报错
print(user.get("phone", "未填")) # 未填,可以给默认值
遍历它们
for score in scores:
print(score)
for key, value in user.items():
print(f"{key}: {value}")
for i, name in enumerate(names): # 同时要下标和值
print(f"第{i + 1}名是{name}")
列表套字典:真实数据长这样
students = [
{"name": "小明", "score": 88},
{"name": "小红", "score": 95},
]
for s in students:
print(f'{s["name"]} 考了 {s["score"]} 分')
你从网络接口、数据库拿到的数据,基本都是这个形状。看懂它,你就能读懂大部分真实代码。
10 秒自测
a = [1, 2, 3]
print(a[1:])
答案是 [2, 3]。从下标 1 开始到结尾。