内容正文:
举一反三考点练
《Python程序设计》结构数据类型及其操作-讲义
1. 综合应用列表;
2. 综合应用元组;
3. 综合应用字典;
知识点一 列表
1. 定义与创建
定义:列表(list)是Python中最常用的有序可变序列,可存储任意类型元素(数字、字符串、列表等),元素间用逗号分隔,整体用方括号[]括起来。
创建方式:
直接赋值:lst = [1, 'a', True]
使用list()函数:lst = list('abc') → ['a', 'b', 'c'];lst = list(range(5)) → [0, 1, 2, 3, 4]
空列表:lst = []或lst = list()
2. 索引与切片
索引:从0开始,支持负索引(-1表示最后一个元素)。如lst[0]为首元素,lst[-1]为末元素。
切片:格式[start:stop:step],获取子列表(左闭右开)。
省略参数:lst[:3](前3个元素),lst[::2](步长为2),lst[::-1](逆序)。
3. 常用操作
增:
append(obj):末尾追加元素。
insert(index, obj):指定位置插入。
extend(iterable):末尾追加可迭代对象(如列表、元组)。
删:
del lst[index]:删除指定索引元素。
remove(obj):删除首个匹配元素(不存在则报错)。
pop([index]):删除并返回指定索引元素(默认末尾)。
clear():清空列表。
改:通过索引直接赋值,如lst[0] = 100。
查:
index(obj):返回首个匹配元素的索引。
count(obj):统计元素出现次数。
in/not in:判断元素是否存在(如'a' in lst)。
4. 排序与反转
sort(key=None, reverse=False):原地排序(默认升序),reverse=True降序。
sorted(lst):返回排序后的新列表(原列表不变)。
reverse():原地反转列表。
5. 列表推导式
简洁生成列表的语法:[expression for item in iterable if condition]。
示例:[x**2 for x in range(5)] → [0, 1, 4, 9, 16]。
6. 多维列表
列表嵌套形成多维结构(如矩阵),通过多重索引访问:matrix[0][1](第0行第1列)。
7. 内存与引用
列表是可变对象,赋值操作传递引用(修改lst2 = lst1的lst2会影响lst1)。
浅拷贝:lst.copy()或lst[:](生成新列表,但嵌套元素仍共享引用)。
深拷贝:copy.deepcopy(lst)(完全独立副本)。
8. 常用函数
len(lst):返回列表长度。
max(lst)/min(lst):返回最大/最小值(元素需可比较)。
sum(lst):求和(元素为数值型)。
(单项选择题)在Python中,执行以下代码后,列表lst的值是?( )
lst = [1, 2, 3]
lst.append([4, 5])
A. [1, 2, 3, 4, 5]
B. [1, 2, 3, [4, 5]]
C. [[1, 2, 3], 4, 5]
D. [1, 2, 3, 4, [5]]
【答案】B
【解析】append()方法用于在列表末尾追加一个元素,无论该元素是什么类型(此处为一个列表[4, 5]),它都会作为一个整体被添加进去。
【要点】考查列表append()方法的功能,即追加单个元素。
1.(单项选择题)已知列表lst = [10, 20, 30, 40, 50],要获取子列表[20, 30, 40],正确的切片操作是?( )
A. lst[1:4]
B. lst[2:4]
C. lst[1:3]
D. lst[2:5]
【答案】A
【解析】切片操作[start:stop]包含起始索引start,但不包含结束索引stop。要获取索引为1、2、3的元素,应使用lst[1:4]。
【要点】考查列表切片的左闭右开原则。
2.(单项选择题)下列关于列表操作的说法,错误的是?( )
A. lst.sort()方法会直接修改原列表,使其有序。
B. sorted(lst)函数会返回一个排序后的新列表,原列表不变。
C. del lst[2]可以删除列表中索引为2的元素。
D. lst.remove(2)和del lst[2]的功能完全相同。
【答案】D
【解析】remove(obj)是根据元素值删除第一个匹配项,而del lst[index]是根据索引删除元素。例如,对于lst = [2, 3, 2],lst.remove(2)会删除第一个2,而del lst[2]会删除最后一个2。
【要点】考查remove()方法与del语句的区别,前者按值删除,后者按索引删除。
3.(判断题)在Python中,列表是可变序列,因此可以通过索引直接修改列表中的元素。( )
【答案】√
【解析】可变是列表的核心特性之一,允许对已存在的元素进行修改、删除或添加新元素。通过lst[index] = new_value即可修改。
【要点】考查列表的可变性(Mutable)特性。
1.(判断题)执行lst1 = [1, 2]; lst2 = lst1; lst2.append(3)后,lst1的值会变为[1, 2, 3]。( )
【答案】√
【解析】lst2 = lst1是赋值操作,传递的是对象的引用,而非创建副本。此时lst1和lst2指向同一个列表对象,因此对lst2的修改会直接影响lst1。
【要点】考查列表的引用传递特性。
2.(填空题)请用列表推导式生成一个包含0到9之间所有偶数的列表,实现语句为:even_list = ______。
【答案】[x for x in range(10) if x % 2 == 0]
【解析】列表推导式[expression for item in iterable if condition]可以简洁地生成列表。range(10)生成0-9,if x % 2 == 0筛选出偶数。
【要点】考查列表推导式的语法和应用。
3.(填空题)要统计列表words = ['apple', 'banana', 'apple', 'orange']中字符串'apple'出现的次数,可以使用的代码是count = words.______('apple')。
【答案】count
【解析】列表的count()方法用于统计某个元素在列表中出现的次数。
【要点】考查列表count()方法的使用。
· 列表是Python中一种有序且可变的序列,能够存储任意类型的元素。
· 通过索引和切片可以灵活地访问、修改列表中的元素或获取子列表。
· 列表提供了丰富的内置方法(如增、删、改、查、排序)来高效操作数据。
· 列表推导式是一种简洁创建新列表的语法,但需注意列表赋值是引用传递。
知识点二 元组
1. 定义
元组是Python的有序序列,用圆括号()表示,元素间用逗号分隔。与列表不同,元组是不可变(immutable)的,即创建后不能修改元素。
2. 创建方式
直接赋值:t = (1, 2, 3)
单元素元组需加逗号:t = (1,)(否则t = (1)会被视为整数1)
使用tuple()函数:t = tuple([1, 2, 3])
3. 特性
有序性:元素按定义顺序排列,支持索引(如t[0])和切片(如t[1:3])。
不可变性:不能修改、删除或添加元素(如t[0] = 4会报错)。
可哈希:可作为字典的键或集合的元素(列表不可)。
4. 常用操作
索引与切片:同列表,如t[-1]返回最后一个元素。
内置函数:
len(t):返回元组长度。
max(t)/min(t):返回最大/最小元素(需元素可比较)。
t.count(x):统计元素x出现次数。
t.index(x):返回元素x首次出现的索引。
解包:a, b = (1, 2)将元素赋值给变量。
5. 与列表的区别
特性 元组 列表
可变性 不可变 可变
符号 () []
性能 更快(内存占用少) 较慢(支持动态修改)
适用场景 固定数据、字典键 频繁修改的数据
6. 应用场景
存储不应修改的数据(如坐标、数据库记录)。
作为多值返回的函数结果(如return x, y实际返回元组)。
用作字典的键(如{(1, 2): "value"})。
(单项选择题) 在Python中,要创建一个只包含整数5的元组,正确的写法是?( )
A. t = (5)
B. t = 5,
C. t = (5,)
D. t = [5]
【答案】C
【解析】创建单元素元组时,必须在元素后添加一个逗号,否则Python会将其识别为一个普通的括号表达式。选项A会被视为整数5,选项B虽然语法正确(元组打包),但选项C是更明确和标准的写法。选项D创建的是列表。
【要点】考查单元素元组的创建方法。
1.(单项选择题) 下列关于元组特性的描述,错误的是?( )
A. 元组中的元素是有序的
B. 元组创建后,其元素不能被修改
C. 元组可以作为字典的键
D. 元组不支持切片操作
【答案】D
【解析】元组和列表一样,都是有序序列,因此支持索引和切片操作(如 t[1:3])。元组的不可变性是指不能修改、删除或添加其元素,但这并不影响通过切片获取子元组。
【要点】考查元组的基本特性,特别是与列表的共性和区别。
2.(单项选择题) 已知元组 t = (1, 2, 3, 2),执行 t.count(2) 的结果是?( )
A. 1
B. 2
C. 3
D. 4
【答案】B
【解析】count() 方法用于统计指定元素在元组中出现的次数。在元组 t 中,元素 2 出现了两次,因此结果为2。
【要点】考查元组的常用方法 count() 的使用。
3.(判断题) 元组是不可变序列,因此任何情况下都无法改变元组的内容。( )
【答案】×
【解析】元组本身的不可变性指的是元组中元素的引用不能被改变。但如果元组中包含可变对象(如列表),那么这个可变对象的内容是可以被修改的。例如,t = ([1, 2], 3),执行 t[0].append(4) 是合法的,列表 [1, 2] 的内容被改变了。
【要点】考查对元组“不可变性”的深层理解,特别是包含可变对象时的情况。
1.(判断题) 在Python中,函数可以返回多个值,其本质是返回一个元组。( )
【答案】√
【解析】当使用 return a, b 这样的语法时,Python会自动将 a 和 b 打包成一个元组 (a, b) 并返回。调用方可以通过元组解包(如 x, y = func())来接收这些值。
【要点】考查元组在函数多值返回中的应用。
2.(填空题) 已知元组 t = ('a', 'b', 'c'),执行语句 x, y, z = t 后,变量 y 的值是__________。
【答案】'b'
【解析】这是元组的解包(unpacking)操作。它将元组中的元素按顺序依次赋值给对应的变量。'a' 赋给 x,'b' 赋给 y,'c' 赋给 z。
【要点】考查元组的解包操作。
3.(填空题) 在Python中,如果需要一个不可变的、可作为字典键的序列,通常选择使用__________。
【答案】元组(或 tuple)
【解析】列表是可变的,因此不能作为字典的键。元组是不可变的且是可哈希的,满足作为字典键的条件。这是元组与列表在应用场景上的一个重要区别。
【要点】考查元组与列表在应用场景上的核心区别。
· 元组是用圆括号表示的有序不可变序列,创建后其元素无法修改。
· 与列表不同,元组因不可变而可哈希,故能用作字典的键。
· 元组支持索引、切片和解包操作,常用于存储固定数据或作为函数多值返回。
知识点三 字典
1. 定义与创建
字典是无序的键值对(key-value)集合,键(key)必须唯一且为不可变类型(如字符串、数字、元组),值(value)可为任意类型。
创建方式:d1 = {} # 空字典
d2 = {'name': 'Tom', 'age': 20} # 直接赋值
d3 = dict([('a', 1), ('b', 2)]) # dict()函数
2. 访问与修改
访问:通过键获取值,若键不存在会报错(可用get()避免,返回None或指定默认值)。print(d2['name']) # 输出:Tom
print(d2.get('gender', 'unknown')) # 键不存在,返回'unknown'
修改:直接通过键赋值,若键不存在则新增。d2['age'] = 21 # 修改
d2['gender'] = 'male' # 新增
3. 删除操作
del d[key]:删除指定键值对,键不存在报错。
d.pop(key):删除并返回键对应的值,键不存在可设置默认值(pop(key, default))。
d.clear():清空字典。
4. 常用方法
keys():返回所有键的视图(类似列表,可迭代)。
values():返回所有值的视图。
items():返回所有键值对的视图(每个元素为(key, value)元组)。
update(d2):用字典d2更新当前字典(键存在则修改,不存在则新增)。
5. 遍历字典
for key in d2: # 遍历键
print(key, d2[key])
for key, value in d2.items(): # 遍历键值对
print(key, value)
6. 特点
无序性(Python 3.7+后插入顺序保留,但逻辑上仍视为无序)。
键唯一性,重复键后面的值会覆盖前面的。
动态性,可随时增删改键值对。
(单项选择题)下列关于Python字典键(key)的说法,正确的是?( )
A. 键必须是字符串类型
B. 键可以是列表类型
C. 键必须是不可变类型
D. 一个字典中可以存在重复的键
【答案】C
【解析】Python字典的键必须是不可变类型,如数字、字符串或元组。列表是可变类型,不能作为键。字典中的键必须是唯一的,如果重复,后面的值会覆盖前面的值。
【要点】考查字典键的特性:唯一性和不可变性。
1.(单项选择题)已知字典 d = {'a': 1, 'b': 2},执行语句 d['c'] = 3 后,字典d的内容是?( )
A. {'a': 1, 'b': 2}
B. {'c': 3}
C. {'a': 1, 'b': 2, 'c': 3}
D. 程序报错
【答案】C
【解析】通过 d['c'] = 3 的方式,如果键'c'不存在,则会在字典中新增一个键值对。因此,字典d会变为包含三个元素的字典。
【要点】考查字典的新增键值对操作。
2.(单项选择题)下列哪个方法可以安全地获取字典中不存在的键的值,而不会导致程序报错?( )
A. d[key]
B. d.get(key)
C. d.pop(key)
D. d.keys()
【答案】B
【解析】使用 d[key] 访问不存在的键会引发 KeyError。d.get(key) 在键不存在时会返回 None 或指定的默认值,不会报错。d.pop(key) 同样会因键不存在而报错。d.keys() 用于获取所有键。
【要点】考查字典的安全访问方法 get()。
3.(判断题)字典中的值(value)可以是任意类型,包括列表、字典等可变类型。( )
【答案】√
【解析】Python对字典的值没有类型限制,可以是任何Python对象,包括数字、字符串、列表、元组,甚至是另一个字典。
【要点】考查字典值的类型特性。
1.(判断题)字典的 items() 方法返回一个包含所有键的列表。( )
【答案】×
【解析】items() 方法返回的是一个包含所有“键值对”的视图对象,每个元素是一个 (key, value) 形式的元组。返回所有键的方法是 keys()。
【要点】考查字典常用方法 items() 的功能。
2.(填空题)要删除字典 my_dict = {'x': 10} 中的键 'x' 及其对应的值,可以使用语句 ______ my_dict['x']。
【答案】del
【解析】del 是Python的删除语句,可以用来删除字典中的指定键值对。语法格式为 del 字典名[键]。
【要点】考查字典元素的删除操作。
3.(填空题)执行以下代码后,变量 result 的值是 ______。
d = {'apple': 1, 'banana': 2}
d.update({'banana': 3, 'cherry': 4})
result = d['banana']
【答案】3
【解析】update() 方法会用另一个字典来更新当前字典。对于键 'banana',因为其已存在,所以值会被更新为 3;对于键 'cherry',因为其不存在,所以会被新增。因此 d['banana'] 的最终值为 3。
【要点】考查字典 update() 方法的更新逻辑。
· 字典是键值对的集合,其键必须唯一且不可变。
· 通过键可直接访问、修改或新增字典中的值。
· keys()、values()、items()是遍历字典的常用方法。
· get()方法可安全访问不存在的键,避免程序报错。
原创精品资源学科网独家享有版权,侵权必究!2
学科网(北京)股份有限公司
学科网(北京)股份有限公司
$