Python 作业错题整理:作业2- Python的数据结构(字典和集合)
1.使用x=set()和x={} 都可以创建一个空集合。 (T/F)
1-2:F。在 Python 中, x = set() 可以创建一个空集合,而 x = {} 创建的是一个空字典,不是空集合。
2.dict={[1,2,3]:"user"}不能创建一个字典。 (T/F)
1-3:T。在 Python 中,字典的键必须是不可变类型,而列表是可变类型,所以 dict = {[1,2,3]: "user"} 不能创建一个字典。
3.下面程序的输出是15929494512
。(T/F)(dic1.update(dic2)返回值?)
dic1={"赵洁" : 15264771766,"张秀华" : 13063767486,"胡桂珍" : 15146046882,"龚丽丽" : 13606379542,"岳瑜" : 13611987725}
dic2={"王玉兰" : 15619397270,"王强" : 15929494512,"王桂荣" : 13794876998,"邓玉英" : 18890393268,"何小红" : 13292597821}
dic3=dic1.update(dic2)
print(dic3["王强"])
- 答案:F (False)
- 解释:
dic1.update(dic2)
方法会修改dic1字典(将dic2的键值对添加到dic1中),但该方法返回的是None,而不是新的字典。因此dic3 = dic1.update(dic2)
会让dic3变成None,后续dic3["王强"]
会抛出KeyError或TypeError,不会输出15929494512。
正确的做法应该是:
dic1.update(dic2) # 先更新dic1
print(dic1["王强"]) # 然后从dic1中获取
4. Python集合中的元素可以是列表。(T/F)
1-14:F。列表是可变类型,不能作为 Python 集合中的元素。
5.len(set([0,4,5,6,0,7,8]))的结果是7。 (T/F)
1-18:T。 set([0,4,5,6,0,7,8]) 会去除重复的 0 ,得到的集合元素为 0 、 4 、 5 、 6 、 7 、 8 ,共 6 个元素, len 结果是 6,所以该说法错误,答案应为F。
6.以下哪一句会得到{'1','2','3'}?
A.list("123")
B.tuple("123")
C.set("123")
D.以上都不是
2-2:D。
- 选项A: list("123") 得到的是列表 ['1', '2', '3'] ;
- 选项B: tuple("123") 得到的是元组 ('1', '2', '3') ;
- 选项C: set("123") 得到的是集合 {'1', '2', '3'} ,但集合是无序的,不能保证顺序就是 {'1','2','3'} ,所以以上选项都不能确定得到 {'1','2','3'} ,选D。
7.给定字典d, 以下选项中对d.items()的描述正确的是 ( )
A.返回一种dict_items类型,包括字典d中所有键值对
B.返回一个元组类型,每个元素是一个二元元组,包括字典d中所有键值对
C.返回一个列表类型,每个元素是一个二元元组,包括字典d中所有键值对
D.返回一个集合类型,每个元素是一个二元元组,包括字典d中所有键值对
2-7:A。 d.items() 返回的是 dict_items 类型,其中包含字典 d 所有的键值对。
8.给定字典d,以下选项中对x in d的描述正确的是 ( )
A.x是一个二元元组,判断x是否是字典d中的键值对
B.判断x是否是字典d中的键
C.判断x是否是在字典d中以键或值方式存在
D.判断x是否是字典d中的值
2-8:B。 x in d 是判断 x 是否是字典 d 中的键。
9.对于集合s,以下哪个操作是不存在的?
A.len(s)
B.s.append(1)
C.max(s)
D.s - {1}
2-11:B。集合没有 append 方法, append 是列表的方法。
集合有add(elem),update(iterable),remove(elem),discard(elem),pop(),clear()
10.返回集合中元素个数的函数是______。
A.size()
B.len()
C.elements()
D.count()
2-14: len() 。 len() 函数可以返回集合中元素的个数。
Python 中常用的集合运算符号及对应功能如下:
- 交集(&):返回两个集合中共同拥有的元素。
示例: {1,2,3} & {2,3,4} → {2,3} - 并集(|):返回两个集合中所有的元素(去重)。
示例: {1,2,3} | {2,3,4} → {1,2,3,4} - 差集(-):返回只属于第一个集合而不属于第二个集合的元素。
示例: {1,2,3} - {2,3,4} → {1} - 对称差集(^):返回只属于其中一个集合的元素(不包含两者共有的元素)。
示例: {1,2,3} ^ {2,3,4} → {1,4} - 子集判断(<=):判断第一个集合是否是第二个集合的子集。
示例: {1,2} <= {1,2,3} → True - 超集判断(>=):判断第一个集合是否是第二个集合的超集。
示例: {1,2,3} >= {1,2} → True
11.已知a={5:'F',8:'C',4:'D',9:'A',3:'K',6:'L'} ,执行下面( )可以得到排序后的列表:
[(3, 'K'), (4, 'D'), (5, 'F'), (6, 'L'), (8, 'C'), (9, 'A')]
A.sorted(a.items())
B.sorted(a.items(),key=lambda x:x[0])
C.sorted(a)
D.sorted(a.items(),key=lambda x:x[1])
3-1:AB。
- 选项A: sorted(a.items()) 会对字典 a 的键值对按照键进行升序排序,能得到目标列表。
- 选项B: sorted(a.items(), key=lambda x: x[0]) 明确指定按照键( x[0] )进行排序,也能得到目标列表。
- 选项C: sorted(a) 只是对字典的键进行排序,得到的是键的列表,不是键值对的列表,不符合要求。
- 选项D: sorted(a.items(), key=lambda x: x[1]) 是按照值进行排序,不符合按键排序的要求。
12.下面能创建集合{'MicroSoft', 'Google', 'Oracle', 'Taobao', 'Runoob'}的是( )
A.
set("Google", "Runoob", "Taobao","MicroSoft","Oracle")
B.
set(("Google", "Runoob", "Taobao","MicroSoft","Oracle"))
C.
set(["Google", "Runoob", "Taobao","MicroSoft","Oracle"])
D.
set("Google, Runoob, Taobao,MicroSoft,Oracle")
3-4:
答案:BC。
解析:
- 选项A: set 函数如果有多个参数,这些参数需要是可迭代对象,不能直接这样传递多个字符串参数,该选项错误。
- 选项B:将元组 ("Google", "Runoob", "Taobao","MicroSoft","Oracle") 传递给 set 函数,可以创建对应的集合,该选项正确。
- 选项C:将列表 ["Google", "Runoob", "Taobao","MicroSoft","Oracle"] 传递给 set 函数,能创建对应的集合,该选项正确。
- 选项D: set("Google, Runoob, Taobao,MicroSoft,Oracle") 会将字符串中的每个字符作为集合元素,而不是期望的五个字符串,该选项错误。
本文系作者 @xiin 原创发布在To Future$站点。未经许可,禁止转载。
暂无评论数据