首页
/
python
/
python 实战专题
打印📝 1 篇文章
41 道配套习题
数据结构基础专题 专题说明 本专题系统讲解Python四大核心数据结构的核心知识,包括列表(list)的增删改查与切片操作、元组(tuple)的不可变特性、字典(dict)的键值对操作与遍历、集合(set)的数学运算以及推导式的语法与用法。
学习目标 掌握列表的创建、元素操作、切片与排序方法 理解元组的不可变特性及其使用场景 熟练使用字典的键值对操作、遍历与常用方法 掌握集合的创建、集合运算(交集、并集、差集) 理解列表推导式、字典推导式和集合推导式 学习内容 列表:创建、索引、切片、增删改查、排序与翻转、常用方法 元组:创建、解包、与列表的区别、命名元组 字典:创建、键值对操作、遍历(keys/values/items)、常用方法 集合:创建、集合运算(交集/并集/差集/对称差集)、去重 推导式:列表推导式、字典推导式、集合推导式 学习建议 列表和字典是最常用的数据结构,务必熟练掌握其常用方法 理解可变对象(list/dict/set)与不可变对象(tuple)的区别 切片操作是Python的精髓,注意步长和负索引的使用 推导式虽然简洁,但过度复杂的推导式会影响可读性 📝 配套习题(41 题) 💡 参考答案在文末
判断题
1
字典的键必须是不可变类型,如字符串、数字、元组,但列表不能作为字典的键。
2
集合推导式{x for x in range(5)}生成集合{0, 1, 2, 3, 4},与列表推导式语法类似但使用花括号。
3
访问嵌套列表data = [[1, 2], [3, 4]]中第二个列表的第一个元素,应使用data[1][0]。
4
元组是不可变序列,一旦创建就不能修改其元素,也不能添加或删除元素。
5
字典推导式使用{键:值 for 变量 in 可迭代对象}语法,必须同时指定键和值的表达式。
6
列表推导式[x for x in range(10)]生成一个包含0到9的列表。
7
序列解包要求左侧变量数量必须与右侧序列元素数量完全相等。
8
列表是可变序列,可以通过索引修改元素值,但不能通过索引添加新元素。
9
集合会自动去除重复元素,创建集合时重复元素只保留一个。
单选题
10
以下代码的输出结果是什么?
Python
def func (a, b, c):
return a + b + c
params = {'a' : 1 , 'b' : 2 , 'c' : 3 }
result = func(** params)
print(result)
A
{'a': 1, 'b': 2, 'c': 3}
11
以下哪个字典推导式可以生成{1: 'odd', 3: 'odd', 5: 'odd'}?
A
{x: 'odd' for x in range(6) if x % 2 == 1}
B
{x: 'odd' for x in range(6) if x % 2 == 0}
C
{x: 'odd' for x in [1, 3, 5]}
D
{x: 'odd' for x in range(6)}
A
{x: x for x in range(3)}
C
{x: x**2 for x in range(3)}
D
{k: v for k, v in items}
15
集合推导式{x % 3 for x in range(10)}生成什么结果?
B
{0, 1, 2, 3, 4, 5, 6, 7, 8, 9}
16
数据结构data = [{'name': 'a', 'scores': [80, 90]}, {'name': 'b', 'scores': [70, 85]}],访问第二个学生的第二个分数的正确方式是?
19
集合A = {1, 2, 3},集合B = {2, 3, 4},执行A & B的结果是什么?
21
执行first, *rest = [1, 2, 3, 4, 5]后,rest的值是什么?
22
执行a, b, c = (1, 2, 3)后,变量a、b、c的值分别是?
B
a=(1,2,3), b=None, c=None
23
列表推导式[x for x in range(10) if x % 2 == 0]生成什么结果?
A
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
24
嵌套列表推导式[[x for x in range(3)] for y in range(2)]生成什么结果?
B
[[0, 0], [1, 1], [2, 2]]
D
[[0, 1], [0, 1], [0, 1]]
25
字典推导式{x: x*2 for x in range(3)}生成什么结果?
D
{(0, 0), (1, 2), (2, 4)}
26
嵌套字典data = {'user': {'name': '张三', 'age': 25}},访问用户年龄的正确方式是?
多选题
29
对于嵌套数据结构data = {'students': [{'name': '张三', 'age': 20}, {'name': '李四', 'age': 22}]},以下哪些访问方式是正确的?
A
data['students'][0]['name']
B
data['students'][1]['age']
D
data['students']['name']
E
for s in data['students']: print(s['name'])
F
data.get('students', [])[0].get('name')
A
{x: x**2 for x in range(5)}
B
{k: v for k, v in [('a', 1), ('b', 2)]}
C
{x: len(x) for x in ['a', 'ab', 'abc']}
D
{x for x in range(5)} # 这不是字典推导式
E
{k: v for k, v in d.items() if v > 0}
F
{i: chr(i) for i in range(65, 70)}
31
集合A = {1, 2, 3},集合B = {2, 3, 4},以下哪些运算结果是正确的?
E
A.union(B) = {1, 2, 3, 4}
32
关于三种推导式(列表、字典、集合),以下说法正确 的是?
D
for key, value in {'a': 1}.items():
填空题
35
集合A = {1, 2, 3},集合B = {2, 3, 4}。交集运算使用符号____________ ,对应方法为____________ (),结果是____________ 。并集运算使用符号|,对应方法为union(),结果是{1, 2, 3, 4}。差集运算使用符号-,对应方法为difference(),A - B的结果是{1}。创建空集合必须使用set()函数,因为{}创建的是空字典。
36
集合推导式使用____________ {},语法为____________ 表达式 for 变量 in 可迭代对象},与字典推导式的区别是____________ 键值对的冒号。集合推导式会自动去重,例如{x % 3 for x in range(10)}的结果是{0, 1, 2}。创建空集合不能用{},必须使用set()函数,因为{}创建的是空字典。
37
字典推导式的基本语法是:____________ 键表达式: ____________ 表达式 for 变量 in 可迭代对象}。反转字典键值使用:{____________ : k for k, v in original.items()}。从列表生成字典:{x: x**2 for x in range(5)}生成{0: 0, 1: 1, 2: 4, 3: 9, 4: 16}。带条件筛选:{x: x*2 for x in range(6) if x % 2 == 0}生成{0: 0, 2: 4, 4: 8}。
38
要生成 1-10 中所有偶数的平方列表,正确的列表推导式为 [____________ for x in ____________ if ____________ ],结果得到 [4, 16, 36, 64, 100]。
39
字典d = {'a': 1, 'b': 2},使用____________ 方法安全获取键'c'的值可以写成d.get('c', ____________ ),不会引发异常。要添加新键值对{'c': 3},可以使用____________ 方法:d.update({'c': 3})。遍历字典的键值对使用items方法:for k, v in d.items():。字典的键必须是不可变类型,列表不能作为键因为它是可变类型。
40
Python中交换两个变量a和b的值,最简洁的方式是使用序列解包:____________ , ____________ = ____________ , a。这种方式右侧会先打包成元组,然后左侧进行解包赋值。使用*进行扩展解包时,如first, *middle, last = [1, 2, 3, 4, 5],middle的值是[2, 3, 4],是一个列表类型。
41
嵌套列表data = [[1, 2], [3, 4]],访问第一个列表的第二个元素用____________ ,结果是____________ 。嵌套字典data = {'info': {'name': '张三'}},访问姓名用____________ 。修改嵌套结构的值:data['info']['age'] = 25可以添加新字段。遍历嵌套列表使用双重循环:for row in data: for item in row。列表嵌套字典data = [{'id': 1}, {'id': 2}],访问第二个字典的id用data[1]['id']。
参考答案
1. 正确
2. 正确
3. 正确
4. 正确
5. 正确
6. 正确
7. 错误
8. 正确
9. 正确
10. B
11. A
12. B
13. B
14. B
15. A
16. A
17. B
18. B
19. B
20. D
21. B
22. A
23. B
24. A
25. A
26. B
27. B
28. A;B;C;E;F
29. A;B;C;E;F
30. A;B;C;E;F
31. A;B;C;E
32. A;B;C;D;F
33. A;B;C;D;F
34. A;B;D;E;F
35. &;intersection;{2, 3}
36. 花括号;{;没有
37. {;值;v
38. x**2;range(1, 11);x % 2 == 0
39. get;0;update
40. a;b;b
41. data[0][1];2;data['info']['name']
想在手机上练习这套专题?
使用微信卷王开发者小程序 ,打开首页顶部扫码功能识别二维码