青少年Python编程系列29:Python常用内置函数

前面的内容我们零散学习了大量Python语言中的内置函数。这节课我们把剩下的常用的内置函数都介绍一下。这节课的内容主要是以记忆为主,需要书写的代码不多。下面我们正式开始这节课的内容吧。

一、abs()函数

abs()函数的作用是返回一个数字的绝对值。绝对值是数学上的一个概念,即一个数到数轴原点的距离。我们可以理解为一个数到数字0的距离。正数的绝对值是这个数本身,负数的绝对值是去掉负数符号就可以了。使用方法:

abs(x)

参数是需要求绝对值的数,返回值类型由参数类型决定。

我们看一下例子:

>>> abs(3)
3
>>> abs (-1)
1
>>> abs(3.2)
3.2
>>> abs(-6.9)
6.9

二、divmod()函数

divmod()函数的作用是计算两个数相除的商和余数,返回一个包含商和余数的元组。使用方法:

divmod(a, b)

第一个参数是被除数,第二个参数为除数,余数的符号由除数决定。

我们看具体的例子:

>>> divmod(5, 2)
(2, 1)
>>> divmod(-5, 2)
(-3, 1)
>>> divmod(5, -2)
(-3, -1)
>>> divmod(-5, -2)
(2, -1)

三、enumerate()函数

enumerate()函数的作用是将一个可迭代对象(列表、元组、字符串)组成一个索引序列,以元组的形式同时列出数据和数据的索引号。使用方法:

enumerate(interable)

我们看具体的例子:

list1 = [2, 3, 5, 7, 11, 13]
for i in enumerate(list1):
    print(i)
'''
输出结果:
(0, 2)
(1, 3)
(2, 5)
(3, 7)
(4, 11)
(5, 13)
'''

我可以看出,元组的第一个元素是索引号、第二个元素是可迭代对象元素的值。

四、all()函数

all()函数用于判定可迭代对象中的所有元素是否都为True,如果是则返回True,否则返回False。使用方法:

all(interable)

元素除了值是0、空、None、False以外都是True

我们看具体的例子:

>>> all(['a', 'b', 'c', 'd'])
True
>>> all(['a', 'b', 'c', ''])
False
>>> all([0, 1, 2, 3])
False
>>> all(('a', 'b', 'c', 'd'))
True
>>> all(('a', 'b', 'c', ''))
False
>>> all([])
True
>>> all(())
True

五、any()函数

any()函数用于判定可迭代对象中的所有元素是否都为False,如果是则返回False,否则返回True。使用方法:

any(interable)

这个函数的使用可以与all()函数进行对比,相当于逻辑或和逻辑与的关系。

我们看具体的例子:

>>> any(['a', 'b', 'c', 'd'])
True
>>> any(['a', 'b', 'c', ''])
True
>>> any([0, '', 0.0])
False
>>> any([])
False
>>> any(())
False

六、ascii()函数

ascii()函数用于返回一个表示对象的字符串。使用方法:

ascii(obj)

这个函数的作用是将任何一个类型的数据转换成它的表现形式的字符串。特别要注意的是,它的名称是ascii,但是与ASCII码无关,千万不要与ord()函数混淆。

我们看具体的例子:

>>> ascii([1, 2, 3])
'[1, 2, 3]'
>>> ascii(set([1, 2, 3]))
'{1, 2, 3}'
>>> ascii({'no': 1, 'name': 'Jack'})
"{'no': 1, 'name': 'Jack'}"

七、filter()函数

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

filter(function, interable)

函数的第一个参数为函数名称,第二个参数为可迭代对象。注意:函数的返回值应当为布尔值。

我们看具体的例子:

def iseven(n):
    return n % 2 == 0

list1 = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
even_list = list(filter(iseven, list1))
print(even_list)
# [2, 4, 6, 8, 10]

我们定义一个iseven()函数,如果是偶数范围True,否则返回False。使用filter()函数调用iseven()函数,可以把列表中符合条件的数筛选出来。

注意:参数中的函数名称后面不要加括号。

八、map()函数

map()函数的作用是根据提供的函数对指定的序列做映射。

使用方法:

map(function, interable)

函数的第一个参数为函数名,后面的参数接收一个或多个可迭代对象。把函数作用在列表的每一个元素上,得到一个新的迭代器对象并返回。迭代器对象可以使用list()或tuple()转换成列表或元组。

我们看具体的例子:

def square(a):
    return a ** 2

list_length = [1, 2, 3, 4, 5]
list_area = list(map(square, list_length))
print(list_area)
# [1, 4, 9, 16, 25]

除了使用函数名,我们还可以使用匿名函数。并且,如果函数有多个参数后面可以跟多个可迭代对象。

我们看下面的例子:

added = list(map(lambda: x, y: x + y, [1, 2, 3], [2, 4, 6]))
print(added)
# [3, 6, 10]

map()函数还经常被用来做可迭代对象里面元素的数据类型批量转换。程序运行时要求用户输入n个数字,以逗号隔开。我们可以使用split()方法将它拆分成列表,但是每个元素的数据类型都是字符串,后面程序中需要对这些值进行数字计算。这种情况我们通常使用map()函数进行数据类型的批量转换:

s = input("请输入多个值,以空格隔开:")
list1 = list(map(int, s.split()))

九、help()函数

help()函数的作用是查看函数或模块的用途的详细说明,该函数在交互模式下使用。我们直接看具体的例子:

>>> s = 'a'
>>> help(s.center)
Help on built-in function center:

center(width, fillchar=' ', /) method of builtins.str instance
    Return a centered string of length width.
    
    Padding is done using the specified fill character (default is a space).

例子中使用help()函数查看字符串的center()方法的使用,返回center()的详细使用方法。如果英语比较好的同学可以通过help()函数学到大量官方的教程。

十、课后思考题

1、选择题

下列表达式的值为False的是()

A. all(())

B. any((0, 1))

C. all((0, ))

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

2、判断题

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

3、编程题

以下为一家公司的业务用车的车牌号的记录:

['省A23321', '省A87212', '省A66528', '省A01767', '省A54234', '省A32179']

由于交通限行的政策,政府规定每周车辆限行如下:

星期

尾号

星期一

1、6

星期二

2、7

星期三

3、8

星期四

4、9

星期五

5、0

请编写一个程序,将车牌中星期一被限行的车辆剔除并输出可以通行的车辆。(要求使用filter()函数)

4、编程题

编写一个程序:程序运行后用户输入一组整数(同一行输入,每两个数之间以空格隔开)。并对将每个数翻倍后输出。(要求使用map()函数)

十一、上节课思考题答案

1、参考代码:

def sigma(n):
    if n == 1:
        return 1
    else:
        return n + sigma(n-1)

print(sigma(100))

2、参考代码:

import turtle as t


def ternary_tree(n, a):
    if n <= 60 - 3 * 10: 
        pass
    else:
        t.left(a) 
        t.forward(n) 
        ternary_tree(n-10, a//2) 
        t.backward(n)
        t.right(a) 
        t.forward(n)  
        ternary_tree(n-10, a//2)
        t.backward(n)
        t.right(a) 
        t.forward(n) 
        ternary_tree(n-10, a//2)
        t.backward(n)
        t.left(a)  

t.setheading(90) 
t.pencolor("green")
t.forward(100) 
ternary_tree(60, 50)  
t.hideturtle()
t.done() 

举报
评论 0