《Python语言程序设计》王恺 王志 机械工业出版社 第五章 序列、集合和字典 课后习题答案

5.8 课后习题
(1)Python 中,通过列表中的 index 方法可以根据指定值查找第一个匹配的列表元素 的位置。

(2)Python 中,通过列表中的 insert 方法可以将一个元素插入到列表的指定位置。

(3)若在列表的最后添加新元素,则可以直接使用列表的 append 方法。

(4)使用 del 语句可以删除某个变量或列表中的某个元素。

(5)使用 max 方法可以获取一个列表中最大元素的值。

(6)使用 min 方法可以获取一个列表中最小元素的值。

(7)使用列表中的 count 方法可以统计某个值在列表中出现的次数。

(8)Python 中集合有两种插入元素的方法,分别是 add 和 update。

(9)集合中的 issubset 方法可以用于判断一个集合是否是另一个集合的子集。

(10)集合中的 issuperset 方法可以用于判断一个集合是否是另一个集合的父集。

(11) 使用 del 可以删除某个元素,也可以使用字典中的 pop 方法删除指定键的元素。

(12)使用字典中的 clear 方法可以一次将一个字典中的所有元素都清除。

(13)判断字典中是否存在某个键可以使用字典中的 get 方法,也可以使用成员运算符 in。

(14)已知 ls=[x*2 for x in range(5)],则 print(ls)的输出结果为[0,2,4,6,8]。

(15)迭代器是指可以通过 next 函数不断获取下一个值的对象。

(16) 下列属于可变类型的是(A)

            A. 列表            B. 元组          C. 字符串           D. 数字

(17)下列叙述正确的是(B)

           A. 列表和元组都是用一对中括号括起来的多个元素的有序集合,各元素之间用逗号分隔

           B. 列表是用一对中括号括起来的多个元素的有序集合,各元素之间用逗号分隔,元组是用一对小括号括起来的多个元素的有序集合,各元素之间用逗号分隔

           C. 列表是用一对小括号括起来的多个元素的有序集合,各元素之间用逗号分隔,元组是用一对中括号括起来的多个元素的有序集合,各元素之间用逗号分隔

           D. 列表和元组都是用一对小括号括起来的多个元素的有序集合,各元素之间用逗号分隔

(18)关于复制列表元素说法错误的是(C)

           A. Python 中,通过赋值运算实际上是将两个变量指向同一个对象,而不是将一 个变量的值赋给另一个变量

          B. 采用元素截取的方法,可以根据一个已有列表对象复制出另一个新的列表对 象,后面对两个对象的操作完全独立

          C. 如果一个列表中包含列表类型的元素,元素截取的方法完全可行,两个列表中 的相同列表类型的元素完全独立

          D. 为了真正实现列表的复制操作,可以使用 Python 在 copy 模块中提供的 deepcopy 函数

(19)已知学生类中有属性 name 和 sno,列表 ls 中含有若干学生对象,若要求列表 ls 按照学生的姓名的降序排序,相应的语句是(A)

          A. ls.sort(key=lambda stu:stu.name,reverse=True)

          B. ls.sort(key=lambda stu:stu.name)

          C. ls.sort(key=name,reverse=True)

          D. ls.sort(name)

(20)下列叙述错误的是(C)

          A. 可以使用一对大括号{}或 set 函数创建集合

          B. 可以使用一对大括号{}或 dict 函数创建字典

          C. 可以使用{}或 set()创建空集合

          D. 可以使用{}或 dict()创建空字典

(21)已知定义: d=dict(sno='1810100', name='李晓明', age=19,t=(3,4),s=[3,4,5]), 则 len(d)的值为(A)

          A. 5               B. 6               C. 7              D. 8

(22) 已知字典 d,获取字典中键值集合的语句是(C)

          A. d.items()          B. d.values()           C. d.keys()           D. d.get()

(23)下列有关生成器叙述错误的是(D)

          A. 将列表生成表达式中的一对中括号改为一对小括号即可得到生成器

          B. 对于生成器对象,也可以像其他可迭代对象一样使用 for 循环遍历对象中的每 一个元素

          C. 如果生成元素的方法比较复杂,不适合用 for 循环方式实现,我们还可以借助 yield 关键字利用函数实现生成器的功能

          D. 生成器就是一次性在内存中产生大量列表元素,占用大量的内存空间

(24)关于说法正确的是(B)

           A. 列表是可迭代对象、但不是迭代器;同样,生成器是可迭代对象、但不是迭代 器

           B. 列表是可迭代对象、但不是迭代器;而生成器既是可迭代对象、又是迭代器

           C. 列表既是可迭代对象、又是迭代器;而生成器是可迭代对象、但不是迭代器

           D. 列表既是可迭代对象、又是迭代器;而生成器是迭代器、但不是迭代对象

(25)写出下面程序的运行结果。

t1=("zhangsan",18,95.5)
t2=()
t3=(33,)
t4=([44,55,66])
t5=t1+t3
print(t1,t2,t3,t4,t5)
print(t5) 
print(max(t4))
print(min(t4))
 
 
#输出结果
('zhangsan', 18, 95.5) () (33,) [44, 55, 66] ('zhangsan', 18, 95.5, 33)
('zhangsan', 18, 95.5, 33)
66
44
(26)写出下面程序的运行结果。

ls=[1,2,3,2,3,4]
print(ls.index(4))
print(ls.count(3))
print(max(ls))
print(min(ls))
print(len(ls))
del ls[3]
print(ls)
ls.sort(reverse=True) 
print(ls)
 
 
#输出结果
5
2
4
1
6
[1, 2, 3, 3, 4]
[4, 3, 3, 2, 1]
(27)写出下面程序的运行结果。

import copy
s1=[4,5,6]
s2=s1
s2[1]="nk"
print(s1,s2)
s3=s1[1:3]
s3[1]="cn"
print(s1,s3)
s4=copy.deepcopy(s1)
s4[1]=333 
print(s1,s4)
s5=[4,[5,6]]
s6=s5[1:3]
s5[1][0]="cn"
print(s5,s6)
s7=copy.deepcopy(s5)
s7[1]="nk"
print(s5,s7)
 
 
#输出结果
[4, 'nk', 6] [4, 'nk', 6]
[4, 'nk', 6] ['nk', 'cn']
[4, 'nk', 6] [4, 333, 6]
[4, ['cn', 6]] [['cn', 6]]
[4, ['cn', 6]] [4, 'nk']
(28)写出下面程序的运行结果。

s1={1,2,3} 
s2=set([2,3,3,4]) 
s1.add(3) 
s2.update('ab') 
s3=s1.intersection(s2) 
s4=s1.union(s2) 
s5=s1.difference(s2) 
s6=s1.symmetric_difference(s2) 
print(s1) 
print(s2) 
print(s3) 
print(s4) 
print(s5) 
print(s6) 
 
 
#输出结果
{1, 2, 3}
{2, 3, 4, 'b', 'a'}
{2, 3}
{1, 2, 3, 4, 'b', 'a'}
{1}
{1, 4, 'a', 'b'}
(29)写出下面程序的运行结果。

d1={'name':"zhangsan",'sno':"001",'score':99} 
d2=dict().fromkeys(['radius','height'],0) 
print(d1) 
print(d2) 
d1.update({'age':19}) 
d2.update(radius=10) 
print(d1) 
print(d2) 
del d1['age'] 
height=d2.pop('height','not found') 
print(d1) 
print(d2) 
print(height) 
print(len(d1)) 
print(len(d2)) 
 
 
#输出结果
{'name': 'zhangsan', 'sno': '001', 'score': 99}
{'radius': 0, 'height': 0}
{'name': 'zhangsan', 'sno': '001', 'score': 99, 'age': 19}
{'radius': 10, 'height': 0}
{'name': 'zhangsan', 'sno': '001', 'score': 99}
{'radius': 10}
0
3
1
(30)写出下面程序的运行结果。

s1=[1,2,3,4,5,6,7,8,9,10] 
s2=list(range(10,20)) 
s3=s1[2:8:2] 
s4=s2[-8::-2] 
print(s1) 
print(s2) 
print(s3) 
print(s4) 
 
 
#输出结果
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
[10, 11, 12, 13, 14, 15, 16, 17, 18, 19]
[3, 5, 7]
[12, 10]
(31)该程序用到字典的浅拷贝和深拷贝,已知程序运行结果,请将程序填写完整。

import copy
d1={'name':"zhangsan",'sno':"001",'score':{'math':99,'C++':88}}
d2=d1.copy()
d3=copy.deepcopy(d1)
d1['name']="li"
d1['score']['C++']=90
print(d1)
print(d2)
print(d3)
已知程序运行结果为:

{'name': 'li', 'sno': '001', 'score': {'math': 99, 'C++': 90}}

{'name': 'zhangsan', 'sno': '001', 'score': {'math': 99, 'C++': 90}}

{'name': 'zhangsan', 'sno': '001', 'score': {'math': 99, 'C++': 88}}
 

猜你喜欢

转载自blog.csdn.net/weixin_49647262/article/details/122028116