第16课 核心函数(方法)

掌握常用的内置函数及其用法。

数学类函数:abs、divmod、max、min、pow、round、sum。

类型转换函数:bool、int、float、str、ord、chr、bin、hex、tuple、list、dict、set、enumerate、range、object。

序列操作函数:all、any、filter、map、next、sorted。

对象操作函数:help、dir、type、ascii、format、vars。

交互操作函数:input、print。

文件操作函数:open。

一、数学运算函数

1、abs(x)

该函数返回数字的绝对值。

参数x为数值表达式。

函数返回x(数字)的绝对值。

示例程序:

bash 复制代码
>>> abs(3.14)
3.14
>>> abs(-1 * 3.14)
3.14

2、divmod(a, b)

该函数把数字a除以数字b的商和余数封装成一个元组,并返回。

参数a为被除数,b为除数。

返回值是元组:(a//b, a%b),不是列表。

注意:余数的符号,有第二个参数决定。

示例程序:

bash 复制代码
>>> divmod(10, 3)    # 都是正数的情况
(3, 1)
>>> divmod(-10, 3)   # 被除数为负数的情况
(-4, 2)
>>> divmod(10, -3)   # 除数为负数的情况
(-4, -2)
>>> divmod(-10, -3)  # 都是负数的情况
(3, -1)

二、类型转换函数

1、bool([x])

用于将给定的参数转换成布尔类型,如果没有参数,则返回False。

如果给定参数x,只要x的值为False、或空、或0、或None,返回都是False;否则返回值都是True。

示例程序:

bash 复制代码
>>> bool()    # 不给定参数时
False
>>> bool(False)  # 参数为False时
False
>>> bool("False")  # 参数为字符串"False"时
True
>>> bool(0)   # 参数为数字0时
False
>>> bool("0") # 参数为字符串"0"时
True
>>>> bool("")  # 参数为空时
False
>>> bool(None)  # 参数为None时
False

2、ord(字符)

用于将给定单个字符转换成对应的ASCII码值,返回值为int类型。

注意,参数只能给一个字符,不能多给,也不能不给。

示例程序:

bash 复制代码
>>> ord("0")    # 查看字符串"0"的ASCII码值
48
>>> ord("中")  # 查看汉字"中"的ASCII码值
20013
>>> ord("国")  # 查看汉字"国"的ASCII码值
22269

部分ASCII码表如下:

3、chr(数值表达式)

用于将数值表达式转换成字符串(单个字符)。

可以将chr()函数看作ord()函数的逆运算。

示例程序:

bash 复制代码
>>> chr(20013)  # 查看数字20013对应的字符
"中"
>>> chr(22269)  # 查看数字22269对应的字符
"国"

4、set([可迭代对象])

用于将给定的可迭代对象转换成一个无需不重复的元素集合;如果不给定参数,则创建一个空的元素集合。

集合可以执行交集、并集、差集计算。

示例程序:

bash 复制代码
x = set("Hello")  # 将字符串"Hello"转换成元素集合
y = set("Python")  # 将字符串"Python"转成集合
>>> x, y  # 查看x和y的值
({'e', 'o', 'l', 'H'}, {'P', 'h', 't', 'y', 'o', 'n'})
>>> x & y  # 求两个集合的交集
{'o'}
>>> X | y  # 求两个集合的并集
{'P', 'h', 'H', 'l', 't', 'y', 'o', 'n', 'e'}
>>> x - y  # 求两个集合的差集
{'l', 'H', 'e'}
>>> y - x  # 注意减数和被减数的位置不同,结果也不
{'P', 'h', 'y', 't', 'n'}

5、enumerate(可迭代对象)

用于将一个可遍历对象(如:列表、字符串、元素)组合成一个索引序列,也就是为每一个元素的外增加一个对应的索引,一般用于for循环。

示例程序:

bash 复制代码
>>> lst = [12, 34, 56, 78, 90]  # 初始化一个列表lst
>>> for v in lst:  # 使用for循环遍历列表lst
>>>     print(v)   # 将每次迭代出来的元素打印出来
12
34
56
78
90
>>> # 先将列表lst转换成enumerate对象,再用for循环迭代
>>> for i, v in enumerate(lst):
>>>     print(i, v)  # 将每次迭代出来的索引和元素打印出来
0  12
1  34
2  56
3  78
4  90

6、object()

object类是Python中所有类的基类,如果定义一个类时没有指定继承哪个类,则默认继承object类。

object()函数无参数,返回一个新的无特征对象。

示例程序:

bash 复制代码
>>> object()
<object object at 0x0000015273235400>

三、序列操作函数

1、all(可迭代对象)

用于判断给定的可迭代对象中的每个元素是否都为True,如果是则返回True,否则返回False。

元素值除了0、空、None、False之外,都算True。

注意:all()函数对空字符串、空列表、空元组的判断结果为True。因为all()函数判断的是可迭代对象里的元素是否为真,而不是可迭代对象本身。

因为没有元素,也就不会有假元素,所以返回真。

示例程序:

bash 复制代码
>>> all([1, 2, 3, 4, 5])  # 列表中的数字都不为0
True
>>> all([1, 2, 0, 4, 5])  # 列表中存在一个数字0
False
>>> all(())    # 判断空元组
True
>>> all("")    # 判断空字符串
True
>>> all([])    # 判断空列表
True

2、any(可迭代对象)

用于判断给定的可迭代对象中的元素,只要有一个元素为True,则返回True;否则返回False。

注意:any()函数对空字符串、空列表、空元组的判断结果为False。因为空的可迭代对象里面没有任何元素,所以不会有元素的值为True,所以返回False。

all()和any()的判断逻辑不同,所以对空对象的判断结果也不同。

示例程序:

bash 复制代码
>>> any(['a', 'b', 'c', 'd'])  # 所有元素都为True
True
>>> any(['False', '', '', ''])  # 只有一个元素为True
True
>>> any([False, None, 0, ''])  # 所有元素都为False
False
>>> any(())    # 判断空元组
False
>>> any("")    # 判断空字符串
False
>>> any([])    # 判断空列表
False

3、filter(过滤函数,可迭代对象)

该函数用于过滤序列,将不符合条件的元素过滤掉,返回一个filter对象。可使用list()函数将迭代器对象转换成列表对象。

filter()函数接收两个参数,第一个是处理函数,第二个是要处理的可迭代对象。将可迭代对象传递给处理函数进行处理,最后将符合条件(判断结果为True)的元素放到新的可迭代对象中,实现过滤效果。

示例程序:过滤出列表中的所有奇数。

bash 复制代码
# 定义一个函数,用于判断给定的参数是否为奇数
def ji_shu(n):
    return n % 2 == 1

# 初始化一个原始列表
lst = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
# 将处理函数ji_shu 和 待过滤对象lst传入filter函数
new_obj = filter(ji_shu, lst)  # 执行数据过滤过滤操作
# 将new_obj转换成列表,并打印出来
print(list(new_obj))

运行结果:[1, 3, 5, 7, 9]

4、map(映射函数,可迭代对象)

该函数可接受两个及以上参数,第一个参数是用来映射的函数,后面可以接受一个或多个可迭代对象。通过映射函数,对可迭代对象做映射。

映射过程将:将映射函数依次作用在可迭代对象的每个元素上,得到一个新的map对象并返回。

注意:map()和filter()函数一样,都不改变原有的可迭代对象,而是返回一个新的可迭代对象。

示例程序:

bash 复制代码
# 定义一个函数,用于计算给点参数的平方
def square(x):
    return x ** 2

# 初始化一个列表 lst
lst = [1, 2, 3, 4, 5]
# 将映射函数 square 和 可迭代对象 lst 传入map()函数
new_obj = map(square, lst)  # 执行映射操作
# 将new_obj转换成列表,并打印出来
print(list(new_obj))

运行结果:[1, 4, 9, 16, 25]

(1)通过使用lambda匿名函数的方法使用map()函数,程序如下:

bash 复制代码
# 将两个列表的对应的元素相加,将结果转换成list并打印出来
print(list(map(lambda x, y: x+y, [1, 3, 5], [2, 4, 6])))
# 运行结果如下
[3, 7, 11]

(2)通过lambda匿名函数使返回值是一个元组,程序如下:

bash 复制代码
# 使用匿名函数,结合map()函数做了一系列的批量计算
print(list(map(lambda x, y: (x**y, x+y), [2, 4, 6], [4, 3, 2])))
# 运行结果如下
[(16, 6), (64, 7), (36, 8)]

(3)通过map()函数实现类型转换,程序如下:

bash 复制代码
# 1、将字符串型列表转换成数字类型列表
print(list(map(int, ['1', '2', '3'])))

# 2、将字符串转换成列表
print(list(map(int, '12345')))

# 3、提取字典中的键,将其转换成整数,并将结果放在一个列表中
print(list(map(int, {'1': 2, '3': 4, '5': 6})))
print(list(map(int, {'1': 2, '3': 4, '5': 6}.keys())))

5、next(迭代器对象[, 默认值])

用于返回迭代器对象(iterator)的下一个元素,如果没有下一个对象,就返回默认值;如果不设置默认值,会报错(StopIteration)。

注意:这里的迭代器对象,不是可迭代对象!比如:字符串、列表都是可迭代对象,但是不适用next方法,只有迭代器对象才可以。

使用iter(可迭代对象)函数可以将可迭代对象转换成迭代器对象(iterator)。然后将迭代器对象作为参数传递给next()函数,每调用一次next()函数,就返回下一个元素。

示例程序:

bash 复制代码
>>> it = iter('abc')  # 将字符串转换成 iterator 对象
>>> next(it)    # 使用next()函数查看迭代器对象it的下一个元素
'a'    # 第一次调用next()函数,返回第一个元素
>>> next(it)    # 使用next()函数继续获取it对象的下一个元素
'b'
>>> next(it)    # 第三次使用next()函数,查看it最后一个元素
'c'
>>> next(it)    # it对象获取完毕之后,继续查看下一个元素
Traceback (most recent call last):
  File "<pyshell#17>", line 1, in <module>
    next(it)
StopIteration
>>> next(it, '没有下一个了')    # 设定默认值,避免程序报错
'没有下一个了'    # 如果没有下一个元素可以迭代,就返回默认值

四、对象操作函数

对象类操作函数,知道基本的用法,了解即可。

1、help()

用于查看函数或者模块用途的详细说明,返回对象的帮助信息。示例程序:

bash 复制代码
>>> help('os')    # 查看"os"模块的帮助信息
···显示帮助信息···
>>> lst = [1, 2, 3]    # 初始化一个列表
>>> help(lst)    # 查看列表 lst 的帮助信息
···显示帮助信息···
>>> help(lst.append)  # 查看lst的append方法的帮助文档
Help on built-in function append:

append(object, /) method of builtins.list instance
    Append object to the end of the list.

2、dir([object])

该函数不带参数时,以列表的形式返回当前范围内的变量、方法和定义的类型;带参数时,返回给定参数的属性和方法的列表。如果参数包含方法__dir__(),该方法将被调用。如果参数不包含__dir__(),该方法将最大限度的搜集参数信息。

示例程序:

bash 复制代码
>>> dir()    # 获取当前模块的属性列表
['__annotations__', '__builtins__', '__doc__', '__loader__', '__name__', '__package__', '__spec__', 'it', 'l', 'lst', 'os', 'r']
>>> dir([])  # 查看列表的方法
['__add__', '__class__', '__class_getitem__', '__contains__', '__delattr__', '__delitem__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__gt__', '__hash__', '__iadd__', '__imul__', '__init__', '__init_subclass__', '__iter__', '__le__', '__len__', '__lt__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__reversed__', '__rmul__', '__setattr__', '__setitem__', '__sizeof__', '__str__', '__subclasshook__', 'append', 'clear', 'copy', 'count', 'extend', 'index', 'insert', 'pop', 'remove', 'reverse', 'sort']

3、ascii()

该函数返回一个表示对象的ASCII码字符串。

示例程序:

bash 复制代码
>>> ascii((1, 2))
'(1, 2)'
>>> ascii({'name': '张三', 'age': 12})
"{'name': '\\u5f20\\u4e09', 'age': 12}"

4、vars([object])

该函数用于返回对象object的属性和属性值的字典对象,即查看对象的命名空间;如果没有指定参数,就返回当前调用位置的属性和属性值。

示例程序:

bash 复制代码
>>> a = 2    # 初始化变量 a
>>> b = vars()  # 获取当前调用位置的命名空间
>>> b['a']    # 查看命名空间里,变量a的属性值
2

五、模拟考题

(一)单选题:

1、关于abs()函数,描述不正确的是( )。

A、abs()函数的功能是取整数的绝对值

B、abs()函数的功能是取实数的绝对值

C、abs()函数的功能是取一个数的绝对值

D、负数的绝对值是整数

2、以下表达式的值为False的是( )。

A、all(())

B、any((0, 1))

C、all((0,))

D、any(['a', 'b', '', 'd'])

3、ascii(chr(65))的值是( )。

A、'A'

B、65

C、"'A'"

D、'65'

4、下列选项中具有查看函数或模块说明功能的函数是( )。

A、help()函数

B、ascii()函数

C、dir()函数

D、vars()函数

(二、判断题)

1、divmod()函数的返回值是一个包含商和余数的列表。( )

2、bool()、bool(None)、bool('')、bool([''])这四个表达式输出的结果都是False。( )

3、在Python中,执行print(ord('a') + 12)语句,能够得到一个数字结果。( )

4、在Python中,函数all([])将返回False。( )

-->参考答案往下翻<--

-->参考答案<--

一、单选题:

1~4:A、C、C、A

二、判断题:

1~4:F、F、T、F

相关推荐
湫ccc1 分钟前
Python简介以及解释器安装(保姆级教学)
开发语言·python
孤独且没人爱的纸鹤4 分钟前
【深度学习】:从人工神经网络的基础原理到循环神经网络的先进技术,跨越智能算法的关键发展阶段及其未来趋势,探索技术进步与应用挑战
人工智能·python·深度学习·机器学习·ai
羊小猪~~8 分钟前
tensorflow案例7--数据增强与测试集, 训练集, 验证集的构建
人工智能·python·深度学习·机器学习·cnn·tensorflow·neo4j
lzhlizihang10 分钟前
python如何使用spark操作hive
hive·python·spark
q0_0p11 分钟前
牛客小白月赛105 (Python题解) A~E
python·牛客
极客代码14 分钟前
【Python TensorFlow】进阶指南(续篇三)
开发语言·人工智能·python·深度学习·tensorflow
庞传奇16 分钟前
TensorFlow 的基本概念和使用场景
人工智能·python·tensorflow
华清远见IT开放实验室24 分钟前
【每天学点AI】实战图像增强技术在人工智能图像处理中的应用
图像处理·人工智能·python·opencv·计算机视觉
mqiqe1 小时前
Elasticsearch 分词器
python·elasticsearch
不去幼儿园2 小时前
【MARL】深入理解多智能体近端策略优化(MAPPO)算法与调参
人工智能·python·算法·机器学习·强化学习