05_列表与元组
会创建、修改和遍历列表,理解元组及切片的边界。
Python 基础专题 05:列表与元组
学习目标:会创建、修改和遍历列表,理解元组及切片的边界。
核心知识
列表 list 是有序且可变的容器,可以混放不同类型,但同类数据更利于维护。append 添加一个元素;extend 逐个添加可迭代对象中的元素;insert 在指定位置插入。pop() 删除并返回末尾元素,remove(value) 删除第一个匹配值。访问越界会抛 IndexError。
names = ["Ada", "Lin"]
names.append("Mo")
names[1] = "Lee"
print(names[0], names[-1], names[1:])
for index, name in enumerate(names, start=1):
print(index, name)
切片 items[start:stop:step] 返回新列表,items[:] 是浅复制:复制外层列表,但嵌套对象仍共享。sorted(items) 返回新列表,items.sort() 原地排序并返回 None。因此不要写 ordered = items.sort()。列表推导式 [n*n for n in range(5) if n % 2 == 0] 适合简单转换和过滤。
元组 tuple 是有序且不能修改其元素引用的序列,(1,) 才是单元素元组。元组内部若含列表,那个列表仍可修改。拆包写法 x, y = (3, 4) 要求元素数量匹配。不可变不等于自动可哈希,包含列表的元组不能作字典键。
逐步理解
对列表方法区分“原地修改”和“返回新值”:append、sort 原地修改,sorted、切片创建新列表。names.append(["A", "B"]) 会加一个列表元素;names.extend(["A", "B"]) 会加两个字符串元素。复制嵌套列表时,请亲自修改一层内部元素并观察浅复制的两边为何一起变化。
动手练习
练习:从 [3, 1, 3] 得到排序后的新列表而不改变原列表。答案:result = sorted(numbers),结果 [1, 3, 3]。