学科分类
目录
基础

常用内置函数

Python内置了一些实现特定功能的函数,这些函数无需由Python使用者重新定义,可直接使用。常用的Python内置函数如表1所示。

表1 Python常用内置函数

函数 说明
abs() 计算绝对值,其参数必须是数字类型
len() 返回序列对象(字符串、列表、元组等)的长度
map() 根据提供的函数对指定的序列做映射
help() 用于查看函数或模块的使用说明
ord() 用于返回Unicode字符对应的码值
chr() 与ord()功能相反,用于返回码值对应的Unicode字符
filter() 用于过滤序列,返回由符合条件的元素组成的新列表

下面演示表1中部分函数的使用方法。

1.abs()函数

abs()函数用于计算绝对值,其参数必须是数字类型。需要说明的是,如果参数是一个复数,那么abs()函数返回的绝对值是此复数与它的共轭复数乘积的平方根。示例代码如下:

prit(abs(-5))
print(abs(3.14))
print(abs(8 + 3j))

运行代码,结果如下所示:

5
3.14
8.54400374531753

2.map()函数

map函数会根据提供的函数对指定的序列做映射。

map函数的定义如下:

map(function, sequence[, sequence, ...]) -> list

在上述定义中,第1个参数是函数的名称;剩余的参数是一个或者多个序列;返回值是一个列表(Python 3以前)。在Python 3以后,map函数的返回值变成迭代器对象,通过list()函数可以把它转换为列表,也可以使用for循环进行迭代操作。

map函数的作用是以参数序列中的每个元素分别调用function函数,把每次调用后返回的结果保存到新的列表中。

示例如下:

func = lambda x:x+2

result = map(func, [1,2,3,4,5])

print(list(result))

在上述示例中,定义了匿名函数func,接着通过map函数把序列的每个元素取出来,作为参数调用func函数,然后把结果放到result列表中。

程序输出的结果为:

[3, 4, 5, 6, 7]

接下来,通过一张图来描述上述示例执行的原理,如图1所示。

image-20200619101224996

图1 map函数原理图

当传入的函数需要两个参数的时候,同样需要传递两个列表。示例如下:

result = map(lambda x, y: x+y, [1, 2, 3], [4, 5, 6])

print(list(result))

运行代码,输出结果如下:

[5, 7, 9]

注意:

在Python 3以前,当传入的函数为None时,相当于合并参数为元组。示例(Python 2.7)如下:

result = map(None, [1, 3, 5, 7, 9], [2, 4, 6, 8, 10])

print(result)

运行代码,输出结果如下:

[(1, 2), (3, 4), (5, 6), (7, 8), (9, 10)]

如果两个序列的元素个数不一致,那么元素少的序列会以None补齐。示例(Python 2.7)如下:

result = map(None, [1, 3, 5, 7, 9], [2, 4, 6])

print(result)

运行代码,输出结果如下:

[(1, 2), (3, 4), (5, 6), (7, None), (9, None)]

在Python 3以后,当map传入的函数为None时,这等同于zip函数的功能,并且已经被zip函数取代了。另外,map函数无法处理两个序列长度不一致、对应位置操作数类型不一致的情况,它们都会报类型错误。

3.ord()函数

ord()函数用于返回字符在Unicode编码表中对应的码值,其参数是一个 字符。示例代码如下:

print(ord('a'))
print(ord('A'))

运行代码,结果如下所示:

97
65

4.chr()函数

chr()函数和ord()函数的功能相反,可根据码值返回相应的Unicode 字符,其参数是一个整数,取值范围为0~255。示例代码如下:

print(chr(97))
print(chr(65))

运行代码,结果如下所示:

a
A

5.filter()函数

filter函数会对指定序列执行过滤操作。

filter函数的定义如下:

filter(function or None, sequence) -> list, tuple, or string

在上述定义中,第1个参数可以是函数的名称或者None;第2个参数可以是序列、元组、字符串;返回值可以是序列(Python 3以后返回的是迭代器,同样要转换为序列)、元组或者字符串。其中,function只能接收一个参数,而且返回值是布尔值(True或False)。

示例如下:

func = lambda x:x%2
result = filter(func, [1, 2, 3, 4, 5])
print(list(result))

在上述示例中,定义了匿名函数func,接着通过filter函数把序列的每个元素取出来,作为参数调用func函数,然后把结果放到result列表中。

运行代码,输出结果如下:

[1, 3, 5]

filter函数的作用是,是以参数序列中的每个元素分别调用function函数,最后返回的结果包含调用结果为True的元素。为了让大家理解filter函数的作用,接下来,通过一张图来描述上述示例执行的原理,如图2所示。

image-20200619101240584

图2 filter函数原理图

图2分析了上述程序执行的原理。由图可知,程序把原始序列的元素执行取余操作以后,将不能被2整除(结果为True)的元素筛选出来构成一个新的列表。

在filter函数中,返回值的类型跟sequence参数的类型必须相同。示例(Python 2.7中)如下:

>>> filter(None, "she")
she
点击此处
隐藏目录