容器类型
约 4804 字大约 16 分钟
2026-08-13
什么是容器类型
容器类型用于存储多个数据。Python中内置的容器类型包括:
| 类型 | 名称 | 是否可变 | 是否有序 | 元素是否可重复 | 示例 |
|---|---|---|---|---|---|
list | 列表 | 可变 | 有序 | 可重复 | [1, 2, 2, 3] |
tuple | 元组 | 不可变 | 有序 | 可重复 | (1, 2, 3) |
dict | 字典 | 可变 | 有序(Python 3.7+) | 键不可重复 | {"a": 1, "b": 2} |
set | 集合 | 可变 | 无序 | 不可重复 | {1, 2, 3} |
str | 字符串 | 不可变 | 有序 | 可重复 | "hello" |
注意:
str也可以视为一种不可变的有序字符序列,本节会穿插涉及。
列表(list)
列表是Python中最常用的可变、有序容器,可以存储任意类型的元素。
创建列表
# 字面量创建
nums = [1, 2, 3, 4, 5]
mixed = [1, "hello", 3.14, True, None]
empty = [] # 空列表
# 通过list()函数创建
chars = list("abc") # ['a', 'b', 'c']
nums2 = list((1, 2, 3)) # [1, 2, 3]索引与切片
fruits = ["苹果", "香蕉", "橙子", "葡萄", "西瓜"]
# 索引访问(从0开始)
print(fruits[0]) # 苹果
print(fruits[-1]) # 西瓜(负数从末尾开始)
# 切片 [start:end:step]
print(fruits[1:4]) # ['香蕉', '橙子', '葡萄'] —— 范围[1,4)
print(fruits[:3]) # ['苹果', '香蕉', '橙子'] —— 返回[0,3)
print(fruits[2:]) # ['橙子', '葡萄', '西瓜'] —— 从索引2到末尾
print(fruits[::2]) # ['苹果', '橙子', '西瓜'] —— 从头到尾,每隔一个取一个,步长为2
print(fruits[1:4:2]) # ['香蕉', '葡萄'] -- 范围[1,4),步长为2
print(fruits[::-1]) # ['西瓜', '葡萄', '橙子', '香蕉', '苹果'] —— 从头到尾,步长为-1(倒序,即反转列表)列表操作
nums = [1, 2, 3]
# 添加元素
nums.append(4) # [1, 2, 3, 4] 末尾添加
nums.insert(0, 0) # [0, 1, 2, 3, 4] 指定位置插入
nums.extend([5, 6]) # [0, 1, 2, 3, 4, 5, 6] 批量添加
# 删除元素
nums.remove(0) # [1, 2, 3, 4, 5, 6] 删除第一个匹配值
popped = nums.pop() # 6, nums变为[1, 2, 3, 4, 5] 删除并返回末尾
popped = nums.pop(0) # 1, nums变为[2, 3, 4, 5] 删除并返回指定位置
del nums[0] # [3, 4, 5] 删除指定位置
nums.clear() # [] 清空列表
# 查找与统计
nums = [1, 2, 3, 2, 4]
print(nums.index(2)) # 1 第一个匹配的位置
print(nums.count(2)) # 2 出现次数
# 排序与反转
nums = [3, 1, 4, 1, 5]
nums.sort() # [1, 1, 3, 4, 5] 原地排序
nums.sort(reverse=True) # [5, 4, 3, 1, 1] 降序
nums.reverse() # [1, 1, 3, 4, 5] 原地反转
# 排序但不修改原列表
nums = [3, 1, 4]
sorted_nums = sorted(nums) # [1, 3, 4], nums不变
# 修改列表项
nums[0] = 10 # [10,3,4]
nums[4] = 10 # IndexError: list assignment index out of range元组(tuple)
元组是不可变的有序序列,一旦创建就不能修改。
创建元组
# 字面量创建(圆括号可省略)
point = (1, 2)
point = 1, 2 # 等价于 (1, 2)
single = (1,) # 单元素必须加逗号!不是 (1)
empty = () # 空元组
# 通过tuple()函数创建
t = tuple([1, 2, 3]) # (1, 2, 3)
t = tuple("abc") # ('a', 'b', 'c')基本操作
t = (1, 2, 3, 2, 4)
# 索引和切片(与list相同)
print(t[0]) # 1
print(t[-1]) # 4
print(t[1:4]) # (2, 3, 2)
# 查询(不能修改)
print(t.index(2)) # 1
print(t.count(2)) # 2
print(3 in t) # True
# 不能修改!
# t[0] = 100 # TypeError: 'tuple' object does not support item assignment
# t.append(5) # AttributeError元组解包
# 元组解包
coord = (3, 4)
x, y = coord
print(x, y) # 3 4
# 扩展解包(Python 3+)
first, *rest = (1, 2, 3, 4)
print(first) # 1
print(rest) # [2, 3, 4]
*rest, last = (1, 2, 3, 4)
print(rest) # [1, 2, 3]
print(last) # 4
# 用于交换变量
a, b = 1, 2
a, b = b, a # a=2, b=1字典(dict)
字典是Python的键值对存储结构,通过键快速查找值。
创建字典
# 字面量创建
person = {
"name": "Alice",
"age": 25,
"city": "北京"
}
empty = {} # 空字典
# 通过dict()函数创建
person = dict(name="Alice", age=25, city="北京")
person = dict([("name", "Alice"), ("age", 25)])
# 从键序列创建,值默认为None或指定
d = dict.fromkeys(["a", "b", "c"], 0)
# {'a': 0, 'b': 0, 'c': 0}访问与修改
person = {"name": "Alice", "age": 25}
# 访问
print(person["name"]) # Alice
# print(person["gender"]) # KeyError!
# 安全访问
print(person.get("gender")) # None(不报错)
print(person.get("gender", "未知")) # 未知(提供默认值)
# 添加/修改
person["gender"] = "女" # 添加新键
person["age"] = 26 # 修改已有键
# 批量更新
person.update({"phone": "123456", "age": 27})
# 删除
del person["phone"] # 删除键值对
value = person.pop("age") # 删除并返回值
last = person.popitem() # 删除并返回最后插入的键值对(Python 3.7+)
person.clear() # 清空重要注意事项
# 键必须是不可变类型(hashable)
valid = {
"string": 1, # str ✓
42: 2, # int ✓
(1, 2): 3, # tuple ✓
# [1, 2]: 4, # list ✗ 不可哈希!
}
# 字典的键是唯一的,重复赋值会覆盖
person = {"name": "Alice", "name": "Bob"}
print(person) # {'name': 'Bob'}集合(set)
集合是无序、不重复的元素集合,支持数学上的集合运算。
创建集合
# 字面量创建
nums = {1, 2, 3, 3, 3} # {1, 2, 3} —— 自动去重
empty = set() # 空集合!不是 {}(那是空字典)
# 通过set()函数创建
nums = set([1, 2, 2, 3]) # {1, 2, 3}
chars = set("hello") # {'h', 'e', 'l', 'o'}集合操作
s = {1, 2, 3}
# 添加/删除
s.add(4) # {1, 2, 3, 4}
s.remove(2) # {1, 3, 4} —— 不存在会报错
s.discard(10) # 不报错,即使不存在
s.pop() # 随机删除并返回一个元素
s.clear() # set()
# 去重利器
nums = [1, 2, 2, 3, 3, 3]
unique = list(set(nums)) # [1, 2, 3](顺序可能不同)容器操作
通用操作函数
以下函数适用于所有容器类型(list、tuple、dict、set、str):
# len() —— 获取元素个数
len([1, 2, 3]) # 3
len((1, 2, 3)) # 3
len({"a": 1, "b": 2}) # 2(键值对数量)
len("hello") # 5
# max() / min() —— 最大/最小值
max([3, 1, 4, 1, 5]) # 5
min((3, 1, 4)) # 1
max("hello") # 'o'(按字符编码)
# sum() —— 求和(元素必须是数字)
sum([1, 2, 3, 4]) # 10
sum((1, 2, 3)) # 6
# sorted() —— 排序,返回新列表
sorted([3, 1, 2]) # [1, 2, 3]
sorted((3, 1, 2)) # [1, 2, 3] —— 返回列表
sorted("cba") # ['a', 'b', 'c']
sorted([3, 1, 2], reverse=True) # [3, 2, 1]
# reversed() —— 反转,返回迭代器
list(reversed([1, 2, 3])) # [3, 2, 1]
list(reversed("abc")) # ['c', 'b', 'a']常用运算符
成员运算符:in / not in
判断元素是否存在于容器中:
# 列表
3 in [1, 2, 3] # True
5 not in [1, 2, 3] # True
# 元组
2 in (1, 2, 3) # True
# 字符串
"he" in "hello" # True —— 检查子串
"x" not in "hello" # True
# 字典 —— 检查的是键,不是值
"name" in {"name": "Alice", "age": 25} # True
"Alice" in {"name": "Alice", "age": 25} # False
# 集合
2 in {1, 2, 3} # True连接与重复运算符
# + 连接(仅有序容器)
[1, 2] + [3, 4] # [1, 2, 3, 4]
(1, 2) + (3, 4) # (1, 2, 3, 4)
"hello " + "world" # "hello world"
# {1, 2} + {3, 4} # TypeError! 集合不支持
# * 重复(仅有序容器)
[1, 2] * 3 # [1, 2, 1, 2, 1, 2]
"-" * 10 # "----------"相等运算符:== / !=
== 比较的是两个容器的内容是否相等,而非它们是否是同一个对象。
比较逻辑:
- 类型必须相同:不同类型的容器即使内容看起来一样,也视为不相等。
[1, 2] == (1, 2)结果为False。 - 长度必须相同:长度不同的容器一定不相等。
- 逐元素比较:从第一个元素开始,依次比较对应位置的元素。对于嵌套容器,会递归地进行逐元素比较。
- 元素使用自身的
==:容器本身不定义元素如何相等,而是调用元素自身的__eq__方法。因此[1, 2] == [1.0, 2.0]为True。
# 基本比较
[1, 2, 3] == [1, 2, 3] # True,内容相同
[1, 2, 3] == [1, 3, 2] # False,顺序不同
# 类型不同
[1, 2] == (1, 2) # False
# 嵌套容器递归比较
[[1, 2], [3, 4]] == [[1, 2], [3, 4]] # True
# 字典比较(键值对)
{"a": 1, "b": 2} == {"b": 2, "a": 1} # True,字典无序,键值对相同即可注意:
==比较的是值相等,不是身份相同(是否为内存中的同一个对象)。要判断身份,使用is。
身份运算符:is / is not
is 用于判断两个变量是否指向内存中的同一个对象,即它们的 id() 是否相同。
a = [1, 2, 3]
b = a
c = [1, 2, 3]
a is b # True,b 和 a 指向同一个列表对象
a is c # False,c 是新创建的另一个对象,尽管内容相同
a == c # True,内容相等
a is not c # True常见使用场景:
# 判断是否为 None(Python 推荐写法)
value = None
if value is None:
print("值为空")
# 判断单例对象
x = True
x is True # True
# 小整数缓存(Python 优化)
a = 100
b = 100
a is b # True(-5 到 256 的整数会被缓存复用)
x = 1000
y = 1000
x is y # False(通常,取决于解释器实现)重要区别:
==问的是"你们长得一样吗?"(值相等)is问的是"你们就是同一个人吗?"(身份相同)- 比较
None时,永远使用is,而不是==
位运算符:&、|、^、~
对于集合(set),位运算符有特殊的集合运算含义:
s1 = {1, 2, 3}
s2 = {2, 3, 4}
# & 交集(两个集合都有的元素)
s1 & s2 # {2, 3}
# | 并集(两个集合所有的元素,去重)
s1 | s2 # {1, 2, 3, 4}
# - 差集(在 s1 中但不在 s2 中的元素)
s1 - s2 # {1}
s2 - s1 # {4}
# ^ 对称差集(只在其中一个集合中的元素)
s1 ^ s2 # {1, 4}
# ~ 不适用于集合,用于整数的按位取反对比:位运算 vs 集合方法
s1 = {1, 2, 3}
s2 = {2, 3, 4}
# 运算符写法
s1 & s2 # {2, 3}
s1 | s2 # {1, 2, 3, 4}
s1 - s2 # {1}
s1 ^ s2 # {1, 4}
# 方法写法(等价)
s1.intersection(s2) # {2, 3}
s1.union(s2) # {1, 2, 3, 4}
s1.difference(s2) # {1}
s1.symmetric_difference(s2) # {1, 4}注意:位运算符只能用于集合(set),不能用于
list、tuple、dict等其他容器类型。
遍历容器
基本 for 循环
# 遍历列表
for item in [1, 2, 3]:
print(item)
# 遍历元组
for char in ("a", "b", "c"):
print(char)
# 遍历字符串
for ch in "hello":
print(ch) # h, e, l, l, o遍历字典
person = {"name": "Alice", "age": 25, "city": "北京"}
# 遍历键(默认)
for key in person:
print(key)
# 遍历键值对
for key, value in person.items():
print(key, value)
# 仅遍历值
for value in person.values():
print(value)
# 仅遍历键(显式)
for key in person.keys():
print(key)遍历集合
s = {1, 2, 3}
for item in s:
print(item)
# 注意:集合是无序的,遍历顺序不固定enumerate() 函数
遍历容器时,如果需要同时获取索引和值,使用 enumerate():
# 基本用法
fruits = ["苹果", "香蕉", "橙子"]
for index, fruit in enumerate(fruits):
print(f"{index}: {fruit}")
# 0: 苹果
# 1: 香蕉
# 2: 橙子
# 指定起始索引
for i, v in enumerate(fruits, start=1):
print(f"{i}. {v}")
# 1. 苹果
# 2. 香蕉
# 3. 橙子zip() 函数
并行遍历多个容器,元素按位置一一配对:
names = ["Alice", "Bob", "Charlie"]
ages = [25, 30, 35]
cities = ["北京", "上海", "广州"]
for name, age, city in zip(names, ages, cities):
print(f"{name} 今年 {age} 岁,住在 {city}")
# zip 以最短容器为准
short = [1, 2]
long = ["a", "b", "c"]
for x, y in zip(short, long):
print(x, y)
# 只输出两组:1 a 和 2 b作业
作业一:列表与身份运算符综合
阅读以下代码,预测每行 print 的输出结果,并在注释中写出你的答案。
nums = [3, 1, 4, 1, 5]
copy = nums[:]
print(nums == copy, nums is copy)
nums[0] = 10
print(nums[0], copy[0])
print(nums == copy, nums is copy)
print(len(nums))
i = 0
count = 0
while i < len(nums):
if nums[i] > 3:
count += 1
i += 1
print(count)作业二:元组、集合与成员运算符综合
阅读以下代码,预测每行 print 的输出结果,并在注释中写出你的答案。
t = (5, 2, 8, 2)
first, *rest = t
print(first, rest)
print(sorted(t))
print(2 in t, 9 not in t)
s = set(t)
print(len(s))
s2 = {2, 8, 10}
print(s & s2, s | s2)作业三:字典与遍历综合
阅读以下代码,预测每行 print 的输出结果,并在注释中写出你的答案。
d = {"x": 10, "y": 20}
d["z"] = 30
d.update({"x": 15})
print(len(d))
print("x" in d, 20 in d)
print(d.get("w", 0))
keys = []
for k in d:
keys.append(k)
print(keys)
i = 0
while i < len(keys):
k = keys[i]
if d[k] > 15:
print(k)
i += 1作业四:字符串操作与循环综合
阅读以下代码,预测每行 print 的输出结果,并在注释中写出你的答案。
s = "hello"
print(s[1:4])
print("el" in s, "x" not in s)
print(s + " world", s * 2)
i = 0
vowels = "aeiou"
count = 0
while i < len(s):
if s[i] in vowels:
count += 1
i += 1
print(count)
print(f"length: {len(s)}")作业五:enumerate、zip与多容器综合
阅读以下代码,预测每行 print 的输出结果,并在注释中写出你的答案。
names = ["Alice", "Bob"]
ages = (25, 30)
pairs = []
for name, age in zip(names, ages):
pairs.append(f"{name}-{age}")
print(pairs)
for i, name in enumerate(names, 1):
print(i, name)
d = {}
i = 0
while i < len(names):
if ages[i] > 20:
d[names[i]] = ages[i]
i += 1
print(len(d))
print(d.get("Alice"))
print(d.get("Charlie", "not found"))作业六:学生信息处理综合练习
以下是一个包含学生信息的列表,请根据要求编写代码完成各项任务。
提示: 以下所有任务请使用循环和条件判断完成,不要使用列表推导式。
students = [
{"id": 988985, "name": "梁平", "sex": "女", "age": 15, "address": "安徽省 淮南市", "tel": "12957961008"},
{"id": 299422, "name": "邱杰", "sex": "男", "age": 25, "address": "辽宁省 本溪市", "tel": "12685726676"},
{"id": 723972, "name": "王超", "sex": "女", "age": 14, "address": "新疆维吾尔自治区 阿克苏地区", "tel": "15277794541"},
{"id": 723768, "name": "冯秀兰", "sex": "女", "age": 29, "address": "辽宁省 丹东市", "tel": "13014888148"},
{"id": 536273, "name": "赖军", "sex": "男", "age": 19, "address": "重庆 重庆市", "tel": "15152658611"},
{"id": 940136, "name": "顾强", "sex": "男", "age": 20, "address": "吉林省 松原市", "tel": "18562759588"},
{"id": 489462, "name": "戴敏", "sex": "男", "age": 25, "address": "湖南省 长沙市", "tel": "11513562318"},
{"id": 863594, "name": "吕涛", "sex": "女", "age": 16, "address": "湖北省 襄阳市", "tel": "16246419558"},
{"id": 718313, "name": "冯静", "sex": "女", "age": 28, "address": "黑龙江省 牡丹江市", "tel": "18243767800"},
{"id": 262068, "name": "蔡明", "sex": "男", "age": 20, "address": "黑龙江省 七台河市", "tel": "14185862227"},
{"id": 900366, "name": "廖磊", "sex": "女", "age": 23, "address": "青海省 海南藏族自治州", "tel": "19469661693"},
{"id": 316019, "name": "冯洋", "sex": "男", "age": 16, "address": "江西省 新余市", "tel": "18842832768"},
{"id": 773536, "name": "韩杰", "sex": "男", "age": 23, "address": "云南省 丽江市", "tel": "18560747335"},
{"id": 494398, "name": "江涛", "sex": "男", "age": 24, "address": "山西省 大同市", "tel": "12774658592"},
{"id": 177459, "name": "文艳", "sex": "男", "age": 27, "address": "山东省 青岛市", "tel": "16233511417"},
{"id": 979439, "name": "杜秀英", "sex": "男", "age": 22, "address": "甘肃省 张掖市", "tel": "14723781356"},
{"id": 142762, "name": "丁艳", "sex": "男", "age": 28, "address": "澳门特别行政区 澳门半岛", "tel": "13157638539"},
{"id": 157141, "name": "邓静", "sex": "女", "age": 19, "address": "海南省 三亚市", "tel": "17658672240"},
{"id": 243063, "name": "江刚", "sex": "女", "age": 15, "address": "安徽省 六安市", "tel": "18205383748"},
{"id": 351709, "name": "乔刚", "sex": "女", "age": 12, "address": "安徽省 蚌埠市", "tel": "14143838021"},
{"id": 236140, "name": "史平", "sex": "男", "age": 24, "address": "广西壮族自治区 百色市", "tel": "11895866733"},
{"id": 254260, "name": "康娜", "sex": "男", "age": 29, "address": "辽宁省 铁岭市", "tel": "18783219853"},
{"id": 387769, "name": "袁磊", "sex": "男", "age": 28, "address": "重庆 重庆市", "tel": "15243676922"},
{"id": 692436, "name": "龙秀英", "sex": "男", "age": 18, "address": "吉林省 延边朝鲜族自治州", "tel": "18667285569"},
{"id": 304202, "name": "姚静", "sex": "男", "age": 21, "address": "吉林省 松原市", "tel": "17962179634"},
{"id": 533032, "name": "潘娜", "sex": "男", "age": 13, "address": "湖北省 孝感市", "tel": "14132684173"},
{"id": 773792, "name": "萧磊", "sex": "男", "age": 29, "address": "河南省 焦作市", "tel": "13865617456"},
{"id": 171440, "name": "邵勇", "sex": "男", "age": 16, "address": "宁夏回族自治区 固原市", "tel": "19454444332"},
{"id": 428587, "name": "李芳", "sex": "男", "age": 29, "address": "四川省 宜宾市", "tel": "14751601674"},
{"id": 926156, "name": "谭芳", "sex": "女", "age": 27, "address": "湖南省 长沙市", "tel": "18683429563"},
{"id": 171494, "name": "夏秀英", "sex": "男", "age": 14, "address": "陕西省 安康市", "tel": "17732967642"},
{"id": 549517, "name": "程娜", "sex": "女", "age": 24, "address": "内蒙古自治区 锡林郭勒盟", "tel": "18927839708"},
{"id": 999121, "name": "武杰", "sex": "女", "age": 21, "address": "新疆维吾尔自治区 博尔塔拉蒙古自治州", "tel": "15349698338"},
{"id": 440785, "name": "崔军", "sex": "男", "age": 26, "address": "山西省 临汾市", "tel": "14863312346"},
{"id": 113636, "name": "廖勇", "sex": "女", "age": 19, "address": "重庆 重庆市", "tel": "18152536541"},
{"id": 109280, "name": "崔强", "sex": "女", "age": 25, "address": "河南省 安阳市", "tel": "12838860122"},
{"id": 988885, "name": "康秀英", "sex": "女", "age": 29, "address": "广东省 佛山市", "tel": "12637161150"},
{"id": 751542, "name": "余磊", "sex": "女", "age": 15, "address": "香港特别行政区 九龙", "tel": "16716667565"},
{"id": 821693, "name": "邵勇", "sex": "女", "age": 27, "address": "内蒙古自治区 鄂尔多斯市", "tel": "11869733772"},
{"id": 595152, "name": "贺涛", "sex": "女", "age": 12, "address": "吉林省 通化市", "tel": "18172684836"},
{"id": 209059, "name": "万勇", "sex": "男", "age": 27, "address": "江苏省 淮安市", "tel": "13523350881"},
{"id": 331199, "name": "江艳", "sex": "男", "age": 29, "address": "内蒙古自治区 包头市", "tel": "14357786637"},
{"id": 597029, "name": "廖磊", "sex": "女", "age": 22, "address": "新疆维吾尔自治区 伊犁哈萨克自治州", "tel": "14343812715"},
{"id": 243965, "name": "马芳", "sex": "女", "age": 29, "address": "湖南省 长沙市", "tel": "12226278003"},
{"id": 796997, "name": "郝霞", "sex": "女", "age": 29, "address": "辽宁省 锦州市", "tel": "15734778439"},
{"id": 735045, "name": "吴娜", "sex": "男", "age": 18, "address": "江西省 鹰潭市", "tel": "12550200851"},
{"id": 858934, "name": "石秀英", "sex": "男", "age": 21, "address": "福建省 南平市", "tel": "14296454005"},
{"id": 646003, "name": "苏静", "sex": "女", "age": 17, "address": "澳门特别行政区 澳门半岛", "tel": "11456865751"},
{"id": 607537, "name": "于磊", "sex": "女", "age": 25, "address": "海南省 海口市", "tel": "14742847575"},
{"id": 817410, "name": "胡超", "sex": "女", "age": 19, "address": "海外 海外", "tel": "16875962137"},
{"id": 985064, "name": "任杰", "sex": "男", "age": 17, "address": "云南省 迪庆藏族自治州", "tel": "17548787335"},
{"id": 644060, "name": "汪秀英", "sex": "男", "age": 19, "address": "香港特别行政区 九龙", "tel": "10278533538"},
{"id": 755803, "name": "徐磊", "sex": "女", "age": 26, "address": "江苏省 徐州市", "tel": "18721465794"},
{"id": 538130, "name": "熊洋", "sex": "男", "age": 13, "address": "吉林省 白城市", "tel": "13491345641"},
{"id": 977696, "name": "孟磊", "sex": "男", "age": 24, "address": "香港特别行政区 香港岛", "tel": "10541964547"},
{"id": 683438, "name": "赵霞", "sex": "男", "age": 28, "address": "重庆 重庆市", "tel": "13085741830"},
{"id": 342123, "name": "曾芳", "sex": "女", "age": 15, "address": "湖南省 邵阳市", "tel": "11645124878"},
{"id": 261733, "name": "马芳", "sex": "女", "age": 22, "address": "台湾 新北市", "tel": "10255722846"},
{"id": 303578, "name": "姜杰", "sex": "女", "age": 17, "address": "黑龙江省 齐齐哈尔市", "tel": "12581543256"},
{"id": 907392, "name": "熊杰", "sex": "男", "age": 16, "address": "广西壮族自治区 北海市", "tel": "18941398494"}
]任务列表:
遍历
students列表,使用 f-string 格式化输出每个学生的姓名和年龄,格式为姓名: xxx, 年龄: xx创建一个新列表
female_students,包含所有性别为"女"的学生(即sex键的值为"女")创建一个新列表
young_females,包含所有年龄小于 25 岁的女生创建一个新列表
chen_students,包含所有姓"陈"的学生(提示:name[0]可以获取姓名的第一个字)创建一个新列表
tel_end_with_1,包含所有电话号码最后一位是 "1" 的学生(提示:字符串可以用索引访问最后一个字符,如tel[-1])创建一个新列表
all_names,包含所有学生的姓名创建一个新列表
female_names,包含所有女生的姓名创建一个新列表
female_contacts,其中每个元素是一个字典,只包含name和tel两个键,仅包含女生的信息计算并打印所有学生的年龄总和
计算并打印所有学生的平均年龄(保留两位小数,使用 f-string 格式化)
创建一个字典
result,包含两个键:"names"对应的值是所有学生姓名的列表,"ages"对应的值是所有学生年龄的列表找到
id为796997的学生,打印其姓名和电话号码。如果找不到,打印"未找到"判断是否包含年龄大于 28 岁的男生。如果存在,打印
True并打印该学生的姓名;否则打印False判断是否所有女生的年龄都在 28 岁以内(即没有超过 28 岁的女生)。如果是,打印
True;否则打印False
