第四章 数据类型和应用
4.1 统计字符的使用频率
1.已知 dict1={1:2},那么执行dict1[2]=3之后dict1的内容是__
A.{2:3}
B.{3:2}
C.{1:2,2:3}
D.{2:1,3:2}
解:C
2.现有dict1={‘a’:2,‘b’:3,‘c’:4},那么len(dict1)的值是____
A.0
B.3
C.6
D.1
解:B
3.Python 3 解释器执行 for x in {‘a’:‘b’, ‘c’:‘d’}: print(x)的结果是什么
A.b c
B.a c
C.b d
D.a b
解:B
输出键。
4.字典对象的__方法可以获取指定“键”对应的“值”
A.get()
B.items()
C.keys()
D.values()
解:A
5.字典对象的__方法可以返回字典中的“键-值对”列表
A.get()
B.items()
C.keys()
D.values()
解:B
6.字典对象的__方法可以返回字典的“键”列表
A.get()
B.items()
C.keys()
D.values()
解:C
7.字典对象的__方法可以返回字典的“值”列表
A.get()
B.items()
C.keys()
D.values()
解:D
8.字典的键可以是字符串常量也可以是整型常量,甚至还可以是列表。
解:错误
9.如果一个字典中存在一个‘a’为健,那么就不可以再有’A’的键。
解:错误
10.字典的键必须唯一,而值可以不唯一。
解:正确
11.字典是可变(不可哈希)数据类型。
解:正确
12.合并两个字典可以直接和列表一样,用“+”号进行操作。
解:错误
4.2 利用正则表达式提取电话号码
1.下面不能严格匹配YYYY-MM-DD这样日期格式的正则表达式是______
A.\d{4}-\d{2}-\d{2}
B.[0-9]-[0-9]-[0-9]
C.[0-9]{4}-[0-9]{2}-[0-9]{2}
D.[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9]
解:B
2.正则表达式的元字符_____用于表示此字符之前的字符或者子模式出现0次或者多次。
A.+
B.^
C.*
D.|
解:C
3.使用正则表达式之前必须先用re的compile方法编译。
解:粗欧文
4.不使用元字符的正则表达式只能匹配字符自己。
解:正确
5.[^ab]
可以匹配除’a’和‘b’之外的任何字符。
解:正确
6.正则表达式元字符"\s"用来匹配任意空白字符
解:正确
7.正则表达式元字符"\d"用来匹配任意数字字符
解:正确
8.正则表达式’python|perl’或’p(ython|erl)'都可以匹配’python’或’perl’
解:正确
9.正则表达式’^http’能成功匹配所有含有"http"字段的字符串
解:错误
10.正则表达式’\d{5}'可用来检查字符串是否为5个数字字符组成的字符串
解:错误
11.以下实例运行输出结果为:
import re
print(re.search('nlp','su zhou nlp').span())
解:(8,11) 或(8, 11)
span()函数返回起始位置和终止位置组成的元组,不包括终止位置的字符。
12.以下实例运行输出结果为:
import re
phone = '1949-10-01'
num = re.sub(r'\D',"",phone)
print(num)
解:19491001 或’19491001’ 或"19491001"
sub(repl, string[, count])或re.sub(pattern, repl, string[, count])使用repl替换string中每一个匹配的子串后返回替换后的字符串。
4.3 列表与复杂排序
1.现有如下代码,排序后lst的结果是_____
lst=[25,77,48]
lst.sort(key=lambda temp:temp%10,reverse=True)
A.[25,77,48]
B.[48,77,25]
C.[25,48,77]
D.[77,48,25]
解:B
2.如下代码的运行结果是____
lst1=[25,77,48]
lst2=lst1
lst1.sort()
print(lst2)
A.[25,77,48]
B.[77,48,25]
C.[77,25,48]
D.[25,48,77]
解:D
sort函数更改原数组
3.如下代码的运行结果是_____
lst1=[25,77,48]
lst2=lst1
sorted(lst1)
print(lst2)
A.[25,77,48]
B.[25,48,77]
C.[77,48,25]
D.[48,77,25]
解:A
sorted函数不更改原数组
4.下列程序执行后,p的值是
a = [ [1, 2, 3], [4, 5, 6], [7, 8, 9] ]
p = 1
for i in range(len(a)):
p*=a[i][i]
A.45
B.15
C.6
D.28
解:A
5.下列Python程序运行结果是()
s = [1, 2, 3, 4]
s.append([5, 6])
print(len(s))
A.2
B.4
C.5
D.6
解:C
追加了一个列表元素,所以长度为4+1=5。
6.下列Python程序运行结果是()
s1 = [4, 5, 6]
s2 = s1
s1[1] = 0
print(s2)
A.[4, 5, 6]
B.[4, 0, 6]
C.[0, 5, 6]
D.[4, 5, 0]
解:B
7.sorted函数的第一个参数不仅可以是列表,也可以是元组。
解:正确
8.python内置的sorted函数和列表的sort方法都属于稳定的排序。
解:正确
9.执行代码x, y, z = sorted([1, 3, 2])之后,变量y的值为__
解:2
10.已知 f = lambda x:5 ,那么表达式f(3)的值为__
解:5
11.以下实例的输出结果是:
tags=[[1,1,1],[2,2,2]] unique_tags=[tag for list in tags for tag in list]print(unique_tags)
解:[1,1,1,2,2,2] 或[1, 1, 1, 2, 2, 2]
12.以下实例的输出结果是:
NUM=lambda x,y : (x>y)*x + (x<y)*y if __name__ = '__main__': a = 10 b = 20 print(NUM(a,b))
解:20
4.4 二分检索
1.用二分法与列表进行检索时,因为列表是可枚举对象,因此用for循环实现二分检索比while循环方便、易懂。
解:错误
2.对Python的字典的key使用二分检索,将会加快字典获取对应项的速度。
解:错误
3.表达式[3] in [1, 2, 3, 4]的值为True
解:错误
4.已知列表x = [1, 2],执行语句y = x 后,表达式 id(x) == id(y)的值为True
解:正确
5.已知列表x = [1, 2],那么执行语句 x.extend([3])之后,x的值为[1, 2, 3]
解:正确
6.Python列表中所有元素必须为相同类型的数据
解:错误
7.假设x为列表对象,那么x.pop()和x.pop(-1)的作用是一样的
解:正确
8.二分查找最坏的时间复杂度是O(log2n),最优时间复杂度是O(1)。
解:正确
9.如果需要对一个无序的列表进行二分检索,首先需要对列表进行____。
解:排序
10.现有一个列表lst=[12,27,38,149,2356,89777],假设需要检索的数值一定存在lst中,那么最少循环次。
解:1
11.现有一个列表lst=[4,12,27,38,149,2356,89777],假设需要检索的数值一定存在lst中,那么最多循环次。
解:3
12.以下实例的输出结果是:
list = ['suzhou', 'shanghai', 'hangzhou'] list_pop = list.pop(-2)print(list_pop)
解:shanghai 或’shanghai’ 或"shanghai"