第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(数字)的绝对值。

示例程序:

>>> abs(3.14)
3.14
>>> abs(-1 * 3.14)
3.14

2、divmod(a, b)

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

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

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

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

示例程序:

>>> 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。

示例程序:

>>> 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类型。

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

示例程序:

>>> ord("0")    # 查看字符串“0”的ASCII码值
48
>>> ord("中")  # 查看汉字“中”的ASCII码值
20013
>>> ord("国")  # 查看汉字“国”的ASCII码值
22269

部分ASCII码表如下:
在这里插入图片描述
在这里插入图片描述

3、chr(数值表达式)

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

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

示例程序:

>>> chr(20013)  # 查看数字20013对应的字符
"中"
>>> chr(22269)  # 查看数字22269对应的字符
"国"

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

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

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

示例程序:

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循环。

示例程序:

>>> 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()函数无参数,返回一个新的无特征对象。

示例程序:

>>> object()
<object object at 0x0000015273235400>

三、序列操作函数

1、all(可迭代对象)

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

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

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

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

示例程序:

>>> 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()的判断逻辑不同,所以对空对象的判断结果也不同。

示例程序:

>>> 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)的元素放到新的可迭代对象中,实现过滤效果。

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

# 定义一个函数,用于判断给定的参数是否为奇数
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()函数一样,都不改变原有的可迭代对象,而是返回一个新的可迭代对象。

示例程序:

# 定义一个函数,用于计算给点参数的平方
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()函数,程序如下:

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

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

# 使用匿名函数,结合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()函数实现类型转换,程序如下:

# 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()函数,就返回下一个元素。

示例程序:

>>> 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()

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

>>> 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 instanceAppend object to the end of the list.

2、dir([object])

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

示例程序:

>>> 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码字符串。

示例程序:

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

4、vars([object])

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

示例程序:

>>> 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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/57768.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于AI深度学习的中医针灸实训室腹针穴位智能辅助定位系统开发

在中医针灸的传统治疗中&#xff0c;穴位取穴的精确度对于治疗效果至关重要。然而&#xff0c;传统的定位方法&#xff0c;如体表标志法、骨度折量法和指寸法&#xff0c;由于观察角度、个体差异&#xff08;如人体姿态和皮肤纹理&#xff09;以及环境因素的干扰&#xff0c;往…

C++ 实现俄罗斯方块游戏

✅作者简介&#xff1a;2022年博客新星 第八。热爱国学的Java后端开发者&#xff0c;修心和技术同步精进。 &#x1f34e;个人主页&#xff1a;Java Fans的博客 &#x1f34a;个人信条&#xff1a;不迁怒&#xff0c;不贰过。小知识&#xff0c;大智慧。 &#x1f49e;当前专栏…

《高频电子线路》—— 相位平衡条件判断准则

文章内容来源于【中国大学MOOC 华中科技大学通信&#xff08;高频&#xff09;电子线路精品公开课】&#xff0c;此篇文章仅作为笔记分享。 相位平衡条件判断准则 反馈电压或者从电感上获得&#xff0c;或者从电容上获得。分别为电感反馈三端振荡器&#xff0c;或者是电容反馈…

砥砺十年风雨路,向新而行创新程丨怿星科技十周年庆典回顾

10月24日&#xff0c;是一年中的第256天&#xff0c;也是程序员节&#xff0c;同时也是怿星的生日。2014年到2024年&#xff0c;年华似水匆匆一瞥&#xff0c;多少岁月轻描淡写&#xff0c;怿星人欢聚一堂&#xff0c;共同为怿星科技的十周年庆生&#xff01; 01.回忆往昔&…

Android——横屏竖屏

系统配置变更的处理机制 为了避免横竖屏切换时重新加载界面的情况&#xff0c;Android设计了一中配置变更机制&#xff0c;在指定的环境配置发生变更之时&#xff0c;无需重启活动页面&#xff0c;只需执行特定的变更行为。该机制的视线过程分为两步&#xff1a; 修改 Androi…

mysql上课总结(5)(MySQL的完整性约束(详细介绍))

目录 一、完整性约束。 &#xff08;1&#xff09;概念与目的。 <1>概念。 <2>目的。 &#xff08;2&#xff09;各个约束的详细&#xff08;表格&#xff09; &#xff08;3&#xff09;各个约束的简要总结。 <1>主键约束。 <2>唯一约束。 <3>非…

msys2更换国内源(多个文件(不是3个文件的版本!))

msys2更换国内源 起因排查答案如下mirrorlist.mingw64mirrorlist.ucrt64mirrorlist.mingw32mirrorlist.mingwmirrorlist.clang64mirrorlist.clang32mirrorlist.msys 不想看经过的直接跳到答案 起因 查了很多个教程大部分都是【打开MSYS2软件内的\etc\pacman.d\ 中3个文件&…

使用 MMDetection 实现 Pascal VOC 数据集的目标检测项目练习(二) ubuntu的下载安装

首先&#xff0c;Linux系统是人工智能和深度学习首选系统。原因如下: 开放性和自由度&#xff1a;Linux 是一个开源操作系统&#xff0c;允许开发者自由修改和分发代码。这在开发和研究阶段非常有用&#xff0c;因为开发者可以轻松地访问和修改底层代码。社区支持&#xff1a;…

TCP Analysis Flags 之 TCP Keep-Alive

前言 默认情况下&#xff0c;Wireshark 的 TCP 解析器会跟踪每个 TCP 会话的状态&#xff0c;并在检测到问题或潜在问题时提供额外的信息。在第一次打开捕获文件时&#xff0c;会对每个 TCP 数据包进行一次分析&#xff0c;数据包按照它们在数据包列表中出现的顺序进行处理。可…

关于数学建模的一些介绍

为了更好了解世界&#xff0c;我们可以通过数学来描述许多特定的现象&#xff0c;而数学模型就是现实世界的理想化&#xff0c;不过它永远不能完全精确地表示现实世界。 在这篇文章中&#xff0c;我将介绍一些数学建模的基本概念以及相应的基础知识&#xff0c;而关于更具体的…

CSRA的LINUX操作系统24年11月2日下午上课笔记

压缩和解压缩&#xff1a;zip 、gzip、bz、xz # zip 压缩 # 压缩文件夹 # 解压缩 # unzip -v 查看压缩包中的内容 # bzip2 dir1/* :将dir1中的所有文件压缩 # gzip # 压缩文件夹 # 解压缩 tar 归档命令&#xff1a; # 创建tar包 tar -c*f # 释放tar包 tar -xf[c] # c …

Java JUC(四) 自定义线程池实现与原理分析

目录 一. 阻塞队列 BlockingQue 二. 拒绝策略 RejectPolicy 三. 线程池 ThreadPool 四. 模拟运行 在 Java基础&#xff08;二&#xff09; 多线程编程 中&#xff0c;我们简单介绍了线程池 ThreadPoolExecutor 的核心概念与基本使用。在本文中&#xff0c;我们将基于前面学…

施耐德M310PLC通讯之ModbusTCP(一)

这是另一个专题----施耐德国产化PLC(M310)的通讯篇 本节是ModbusTcp通讯 测试对象: M310plc与M241PLC 通讯协议: ModbusTcp 主站:M310PLC 从站:M241PLC 1.M310端: 1.1 新建工程(M310采用EcoStruxure Motion Expert 软件) 新建工程,这里不区分PLC型号的,只要是M310即…

电能表预付费系统-标准传输规范(STS)(30)

6.5.3.2 CONTROLBlock construction The 1 6 digit CONTROLBlock is constructed from the data elements in the APDU as defined in Table 36 and Table 37.The most significant digit is in position 1 5 and the least significant digit in position 0. APDU中的数据元素…

Jmeter基础篇(19)JSR223预处理器

前言 JSR223预处理器是Apache JMeter中的一个组件&#xff0c;它允许用户使用任何支持Java Scripting API (JSR 223) 的脚本语言来执行预处理任务。这个功能非常强大&#xff0c;因为它让测试人员能够利用如Groovy、JavaScript&#xff08;Nashorn引擎&#xff09;、BeanShell…

Python基于TensorFlow实现双向循环神经网络GRU加注意力机制分类模型(BiGRU-Attention分类算法)项目实战

说明&#xff1a;这是一个机器学习实战项目&#xff08;附带数据代码文档视频讲解&#xff09;&#xff0c;如需数据代码文档视频讲解可以直接到文章最后关注获取。 1.项目背景 随着深度学习技术的发展&#xff0c;循环神经网络&#xff08;RNN&#xff09;及其变种如门控循环…

echart实现地图数据可视化

文章目录 [TOC](文章目录) 前言一、基本地图展示2.数据可视化 总结 前言 最近工作安排使用echarts来制作图形报表&#xff0c;记录一下我的步骤&#xff0c;需求呈现一个地图&#xff0c;地图显示标签&#xff0c;根据业务指标值给地图不同省市填充不同颜色&#xff0c;鼠标放…

数学真题总结

举反例 看清正负号 对应的特征值一致 不用裁开计算行列式要注意符号&#xff01;&#xff01;&#xff01; 根据值的大小确定正负 没有思路就构建tanx求极值要考虑端点线性方程&#xff1a;求通解归并x几何意义 整体思想 u e^x y都设计好了&#xff0c;曲线是f(x,y) 0,直接把…

ES跟Kafka集成

配合流程 1. Kafka作为分布式流处理平台&#xff0c;能够实时收集和处理不同数据源的数据流&#xff1b; 2. 通过Kafka Connect或者Logstash等中间件&#xff0c;可以将Kafka中的数据流实时推送到Elasticsearch中&#xff1b; 3. Elasticsearch接收到数据后&#xff0c;会根据…

价格文本对齐

记录一下工作里常遇到的一些简单问题&#xff1a; 需求是一个购买按钮上同时展示原价和现价&#xff1a; 1.原价现价文本格式不同 2.原价切需要加打折红线&#xff0c;不方便用富文本一个文本处理。 3.需要对两条文本适配父节点的宽度&#xff0c;不能超出按钮 以下是实现代…