第16章 核心函数
学习要点
至少掌握69个常用函数中的大多数最常用函数,
包含数学运算函数(7个)∶abs、divmod、max、min、pow、round、sum;
类型转换函数(15个)∶bool、int、float、str、ord、chr、bin、hex、tuple、list、dict、set、enumerate、range、object;
序列操作函数(6个)all、any、filter、map、next、sorted ;
对象操作函数(6个)help、dir、type、ascii、format、vars;
交互操作函数(2个)print、input;
文件操作函数(1个)open。
对标内容
记住常用核心内置函数的功能及用法。
数学运算函数
知识点详解
abs(x)
该函数返回数字的绝对值。
参数x为数值表达式。
函数返回x(数字)的绝对值。
例如∶
>>> abs(3.9)
3.9
>>> abs(-3.9)
3.9
divmod(a,b)
该函数把除数和余数运算结果结合起来,返回一个包含商和余数的元组(a//b,a%b)。
参数a为数字,b为数字。
例如∶
>>> divmod(7,2)
(3, 1)
易错点
(1)divmod()函数返回的是商和余数组成的元组,不是列表。
(2)余数的符号由第二个参数的符号决定,如下所示。
>>> divmod(-7,2)
(-4, 1)
>>> divmod(7,-2)
(-4, -1)
>>> divmod(-7,-2)
(3, -1)
模拟考题
考题1 单选题
关于abs()函数,描述不正确的是()。
A. abs()函数的功能是取整数的绝对值
B. abs()函数的功能是取实数的绝对值
C. abs()函数的功能是取一个数的绝对值
D. 负数的绝对值是正数
正确答案∶A
解析∶本题考核对 abs()函数的理解。
考题2 判断题
divmod()函数的返回值是一个包含商和余数的列表。( )
答案∶错误
解析∶ divmod() 函数的返回值是一个包含商和余数的元组。
类型转换函数
知识点详解
bool()
用于将给定参数转换为布尔类型,如果没有参数,则返回False。以下展示了使用 bool() 函数的实例。
>>> bool()
False
>>> bool(0)
False
>>> bool(1)
True
>>> bool(2)
True
ord("字符串")
该函数的返回值类型为int,返回参数所对应的 ASCII码值,如下例所示。ASCI码表如表16-1所示。
>>> ord("0")
48
chr(数值表达式)
该函数的返回值类型为字符串,返回参数所对应的ASCII码字符串,如下例所示。
>>> print(chr(78))
N
set()
该函数创建一个无序不重复元素集,可进行关系测试,删除重复数据,还可以计算交集、差集、并集等。
以下实例展示了set()函数的使用方法。
>>> x = set ('runoob')
>>> y = set('google')
>>> x,y
({'o', 'u', 'b', 'r', 'n'}, {'g', 'l', 'o', 'e'}) #重复的元素被删除
>>> x&y #交集
{'o'}
>>> x|y #并集
{'o', 'l', 'g', 'u', 'e', 'b', 'r', 'n'}
>>> x-y #差集
{'n', 'r', 'u', 'b'}
enumerate()
该函数用于将一个可遍历的数据对象(如列表、元组或字符串)组合为一个索引序列,同时列出数据和数据下标,一般用在 for 循环中。
普通的 for 循环如下所示。
>>> l=[78,98,69,85]
>>> for i in l:
print(i)
78
98
69
85
使用enumerate()函数的 for循环如下所示。
>>> l=[78,98,69,85]
>>> for a,i in enumerate(l):
print( a,i)
0 78
1 98
2 69
3 85
object()
object类是Python中所有类的基类,如果定义一个类时没有指定继承哪个类,则默认继承 object 类。object()函数无参数,返回一个新的无特征对象。
>>> object()
<object object at 0x000001A9F1B24CB0>
易错点
(1)bool()函数的参数与返回值的记忆问题。
(2)set()函数的简单运算。
模拟考题
考题1 判断题
bool()、bool(None)、bool(")、bool(['']) 这5个表达式输出的结果都是False。
答案∶错误
解析∶ bool(['']) 列表参数中有一个字符串元素。
考题2 判断题
在 Python中,执行 print(ord('a')+12)语句,能够得到一个数字结果。
答案∶正确
解析∶ ord('a')的结果是数字,再加12仍旧是数字。
序列操作函数
知识点详解
all()
该函数用于判断给定的可迭代参数中的所有元素是否都为 True,如果是则返回 True,否则返回 False。
元素除了值是0、空、None、False外都算 True。
以下展示了使用all()函数的实例。
>>> all(['a','b','c','d']) #列表中的元素都不为空或0
True
>>> all(['a','b','','d']) #列表中存在一个空元素
False
>>> all([0,1,2,3]) #列表中存在一个值为0的元素
False
>>> all(('a','b','c','d')) #元组中的元素都不为空或0
True
>>> all(('a','b','','d')) #元组中存在一个空元素
False
>> all((0,1,2,3)) #元组中存在一个值为0的元素
False
>>> all([]) #空列表
True
>>> all(()) # 空元组
True
说明:all相当于逻辑运算符的and:找False,找不到就是True,找到了就是Fasle
any()
该函数用于判断给定的可迭代参数iterable是否全部为False,是则返回False,否则返回True。
元素除了值是0、空、None、False 外都算 True。
>>> any(['a','b','c','d']) #列表中的元素都不为空或0
True
>>> any(['a','b','','d']) #列表中存在一个为空的元素
True
>>> any([0,'',False]) #列表中的元素全为0、空、False
False
>>> any(('a','b','c','d')) #元组中的元素都不为空或0
True
>>> any(('a','b','','d')) #元组中存在一个空元素
True
>>> any((0,'',False)) #元组中的元素全为0、空、False
False
>>> any([]) #空列表
False
>>> any(()) #空元组
False
说明:any相当于逻辑运算符or:找True,找不到就是False,找到了就是True
filter()
该函数用于过滤序列,过滤掉不符合条件的元素,返回一个迭代器对象。如果要将结果转换为列表,可以使用 list()函数来转换。
该函数接收两个参数,第一个为函数,第二个为序列,序列的每个元素作为参数传递给函数进行判断,然后返回 True 或False,最后将返回True 的元素放到新列表中。
filter()函数的实例∶过滤出列表中的所有奇数。
def jishu (n):
return n%2 ==1
newlist = filter(jishu,[1,2,3,4,5,6,7,8,9,10])
n=list(newlist)
print(n)
运行结果∶
[1, 3, 5, 7, 9]
map(function,iterable,…..)
map()是 Python 的内置函数,会根据提供的函数对指定的序列做映射。
第一个参数接受一个函数名,后面的参数接受一个或多个可迭代的序列。
把函数依次作用在列表中的每一个元素上,得到一个新的列表并返回。注意,map()函数不改变原列表,而是返回一个新列表,如下例所示。
def square (x):
return x**2
l=list(map(square,[1,2,3,4,5]))
print(l)
运行结果∶
[1, 4, 9, 16, 25]
通过使用lambda 匿名函数的方法使用map()函数,如下例所示。
l=list(map(lambda x,y:x+y,[1,3,5,7,9],[2,4,6,8,10]))
print(l)
运算结果∶
[3, 7, 11, 15, 19]
通过 lambda 函数使返回值是一个元组,如下例所示。
l=list(map(lambda x,y:(x**y,x+y),[2,4,6],[3,2,1]))
print(l)
运算结果∶
[(8, 5), (16, 6), (6, 7)]
map()函数还可以实现类型转换。
例1 将元组转换为列表
l=list(map(int,(1,2,3)))
print (1)
运算结果∶
[1,2,3]
例2 将字符串转换为列表
l=list(map(int,'1234'))
print(l)
运算结果∶
[1,2,3,4]
例3 提取字典中的键,并将结果放在一个列表中
l=list(map(int,{1:2,2:3,3:4}))
print(l)
运算结果∶
[1,2,3]
易错点
(1)all()与any()这两个函数的用法容易混淆。
(2)熟记map()函数的简单用法。
模拟考题
考题1 单选题
以下表达式的值为Fasle的是( )。
A. all() B. any((0,1)) C. all ((0,)) D. any(['a','b',",'d'])
答案C
解析∶本题考核 all()与any()这两个函数的用法。
考题2 判断题
在Python中,函数all([])将返回False。( )
答案:错误
解析空列表返回True。
对象操作函数
知识点详解
help()
该函数用于查看函数或模块用途的详细说明,返回对象为帮助信息。
以下实例展示了help()函数的使用方法。
>>>help('sys') #查看sys模块的帮助信息
……显示帮助信息……
>>>help('str') #查看str数据类型的帮助信息
……显示帮助信息……
>>>a=[1,2,3]
>>>help(a) #查看列表的帮助信息
……显示帮助信息……
>>>help(a.append) #显示列表的 append 方法的帮助信息
……显示帮助信息……
dir([object])
参数object为对象、变量、类型。该函数不带参数时,返回当前范围内的变量、方法和定义的类型列表;带参数时,返回参数的属性、方法列表。如果参数包含方法__dir__(),该方法将被调用。如果参数不包含__dir__(),该方法将最大限度地收集参数信息。
>>> dir() #获得当前模块的属性列表
>>> dir([]) #查看列表的方法
对dir()函数了解即可。
ascii()
该函数返回一个表示对象的字符串,如下例所示。
>>> ascii((1,2))
'(1, 2)'
>>> ascii([1,2])
'[1, 2]'
>>> ascii({1:2,'name':5})
"{1: 2, 'name': 5}"
>>> ascii('?')
"'?'"
>>> ascii(set([1,1,2,3]))
'{1, 2, 3}'
vars([object])
该函数返回对象object的属性和属性值的字典对象如果没有参数,就打印当前调用位置的属性和属性值,如下例所示。
>>> a=2
>>> b=vars()
>>>b["a"]
2
对vars()函数了解即可。
易错点
(1)本节大多数内容了解即可。
(2)注意不要混淆 ascii()函数与ord()函数的用法。
模拟考题
考题1 单选题
asci(chr(6)) 的值是()。
A.'A' B. 65 C. "A" D. '65'
答案∶C
解析∶本题考核 ascii()函数与chr()函数的用法。
考题2 单选题
下列选项中具有查看函数或模块说明功能的函数是()。
A.help()函数 B.ascii()函数 C.dir()函数 D.vars()函数
答案∶A
解析∶本题考核对上述函数用法的了解。
核心函数单元测试
模拟考题
一、单选题(共20题,每题4分,共80分)
1、print(min(80,100,max(50,60,70)))的运行结果是?( )
A. 80
B. 100
C. 50
D. 70
2、print(divmod(223,11))的运行结果是?( )
A. 20, 3
B. (20, 3)
C. 3, 20
D. (3, 20)
3、表达式max(3,min(5,1,7))的结果是?( )
A. 1
B. 3
C. 5
D. 7
4、下列表达式的结果不为10的是?( )
A. sum([1,2,3,4])
B. sum((1,2,3),4
C. sum([1,2,3],4)
D. sum([1,2],[3,4])
5、使用map函数可以实现列表数据元素类型的转换,而无需通过循环。则将列表L=['1','3','5','7','9']转换为列表[1,3,5,7,9]的函数写法为?( )
A. map(int,L)
B. list(map(int,L))
C. map(L,int)
D. list(map(L,int))
6、以下关于len()函数的说法中错误的是?( )
A. len()函数可以用于返回字符串中的字符数
B. len()函数可以用于返回列表中的元素个数
C. len("I love China" )的结果为10
D. len("I love China" )的结果为12
7、去掉列表中的部分数据,例如去掉列表[1,2,3,4,5,6,7,8,9]中3的倍数,可以使用哪一函数来实现?( )
A. map
B. filter
C. zip
D. enumerate
8、a=3.1415926
round(a,2)
运行结果是?( )
A. 3
B. 3.14
C. 3.141
D. 3.1415926
9、round(20/3) 的返回值是以下哪一项?
A. 6
B. 2
C. 7
D. 1
10、a=5.12596
print(round(a,2)) 运行结果是?( )
A. 5
B. 5.1
C. 5.12
D. 5.13
11、type([{2.6}])运行的结果是?( )
A. float
B. dict
C. True
D. list
12、set('hello')运行结果是?( )
A. ('h', 'e', 'l', 'l','o')
B. {'h', 'e', 'l', 'l','o'}
C. {'e', 'h', 'l', 'o'}
D. ('e', 'h', 'l', 'o')
13、 divmod(100,3)的执行结果是?( )
A. (1, 33)
B. (33, 1)
C. [33,1]
D. [1,33]
14、以下表达式的值为True是?( )
A. bool(2022)
B. bool(0)
C. bool()
D. bool({})
15、已知A的ASCII码值为65, s=”China” k=abs(-4.8) 则表达式ord(min(s))+k的值是?( )
A. 71.8
B. 63
C. 61
D. 62
16、divmod(8,5)的结果是?( )
A. 1
B. 3
C. (1,3)
D. [1,3]
17、若有代码:
name=[“李明”,“王宁”,“朱倩”]
for a,i in enumerate(name):
print(a,i)
则显示的结果是?( )
A.
0 李明
1 王宁
2 朱倩
B.
李明
王宁
朱倩
C. 李明,王宁,朱倩
D.
1 李明
2 王宁
3 朱倩
18、下列数据对象中,不能使用len()函数获取数据对象长度的是?( )
A. 2023
B. [2, 0, 2, 3]
C. ["Go", "China!"]
D. ("Go", "China!")
19、下面程序执行结果是?( )
s='123456789'
print(min(s)+max(s))
A. 1
B. 9
C. 10
D. 19
20、divmod()是Python的内置函数。对应变量x和y,divmod(y,x)返回的结果是?( )
A. (x//y, x%y)
B. (x%y, x//y)
C. (y//x, y%x)
D. (y%x,y//x)
二、判断题(共5题,每题4分,共20分)
21、在Python中,filter()函数的参数有两个,第一必须是函数,第二个必须是序列。
正确 错误
22、abs()函数的功能是将对小数进行取整,abs(-2.3)的运行结果是2。
正确 错误
23、set是一个不允许元素重复的集合。由于set里的元素位置允许随意,所以不能用索引访问
正确 错误
24、sum()函数可以对列表进行求和,但不能对元组进行求和
正确 错误
25、enumerate()函数用于将列表、元组或字符串等可遍历的数据对象组合为一个索引序列。( )
正确 错误
答案
一、单选题
1、D 2、B
3、B
试题解析:先进行最小值运算min(5,1,7),结果是1,再执行最大值运算max(3,1),结果是3。
4、D
试题解析:sum() 方法对序列进行求和计算。
5、B
试题解析:注意两个点,一个是map的参数为类型、序列。另外,map生成的对象不是列表,需要强制转换。
6、C
试题解析:len("I love China" )的结果为12,所以C项错误。空格也要统计入内
7、B
试题解析:过滤函数使用filter,map是按一定规则得到一个新序列,zip是组合序列,enumerate是为序列添加索引。
8、B
试题解析:保留2位小数
9、C
10、D
试题解析:保留2位小数,四舍五入,所以结果是5.13。
11、D
试题解析:type([{2.6}])运行的结果是list。
12、C
试题解析:集合去重,所以结果为{'e', 'h', 'l', 'o'}
13、B
试题解析:divmod(100,3)的运行结果为(33, 1)。
14、A
试题解析:bool() 函数用于将给定参数转换为布尔类型,如果没有参数,返回 False。bool({2022})中间有元素,所以为True。
15、A
试题解析:min()取最小值,ord()求得对应字符的ASCII码值,abs()则为绝对值函数。C的ASCII码值为67,67+4.8=71.8
16、C
试题解析:divmod()函数返回的是商和余数组成的元组,而不是列表,也不是单个的商或余数
17、A
试题解析:enumerate()函数用于将序列对象组合为索引与数据元素的元组。程序中的a和i分别遍历元组中的索引和数据元素。索引从0开始
18、A
试题解析:len函数用于返回字符串、列表、字典、元组等的长度。
19、D
试题解析:s='123456789',min(s)='1',max(s)='9',所以结果为两个字符串相连,正确答案为:19。
20、C
试题解析:考查divmod()函数的用法
二、判断题
21、正确
22、错误
试题解析:abs()函数的功能是求绝对值。abs(-2.3)的运行结果是2.3。
23、正确 24、错误 25、正确