【Python】数学函数和特殊内置函数大揭秘:Python中隐藏的秘密武器

news2024/11/24 8:34:27

欢迎来CILMY23的博客

本篇主题为 数学函数和特殊内置函数大揭秘:Python中隐藏的秘密武器

个人主页:CILMY23-CSDN博客

个人专栏系列: Python | C语言 | 数据结构与算法 | C++

感谢观看,支持的可以给个一键三连,点赞关注+收藏。


写在前头:

Python作为一门功能强大的编程语言,拥有许多特殊的内置函数,它们往往隐藏在平常不易被注意到的角落里。这些特殊内置函数提供了许多强大且灵活的功能,为程序员们带来许多便利。但是在揭开魔术师的盒子之前我们会用数学函数和特殊的数据类型来开端。


目录

一、复数,分数和高精度实数

1.1 复数类型

1.2 分数和高精度实数

二、常用数学函数

常用内置数学函数

 Math中的常用数学函数

三、特殊内置函数

3.1 内置函数介绍

3.2.1 range()函数 

3.2.2 type()和isinstance()函数

3.2.3 eval()函数

3.2.4 map()函数

3.2.5 filter()函数

3.2.6 zip()函数

3.2.7 enumerate()函数


一、复数,分数和高精度实数

在之前讲解数据类型时,我们并没有写到这一部分,因为这些是和数学函数挂钩的,所以单独拿出来写

1.1 复数类型

复数 (Complex)由实数部分和虚数部分构成,可以用 a + b j 或 a + bJ 或complex(a,b)表示,如 12.6 + 5 j,3 + 4J。对于复数z 可以用 z.real 来获得实部,用 z.imag 来获得虚部

# 1.1 复数
z1 = 3 + 9j
z2 = 5 + 7J

print(f"z1的实部{z1.real},z2的实部{z2.real},实部和{z1.real+z2.real}")
print(f"z1的虚部{z1.imag},z2的虚部{z2.imag}")

# 复数求模,用数学函数abs求解
print(f"z1的模长:{abs(z1)},z2的模长:{abs(z2)}")

# 复数求共轭,conjugate()方法
print(f"z1的共轭复数:{z1.conjugate()}")

 当然复数的运算在python中远不止这些,我们也只是稍微举个例子,感兴趣可以自行探究。

1.2 分数和高精度实数

Python标准库模块fractions中的Fraction对象和Decimal对象分别支持分数运算和高精度实数运算。

from fractions import Fraction

frac = Fraction(3, 4)  # 表示 3/4
print(frac)

result = frac + Fraction(1, 2)  # 分数运算
print(result)

print(f"{frac.denominator}")  #打印分母
print(f"{frac.numerator}")  #打印分子

结果如下:

 高精度实数:

from decimal import Decimal

x = Decimal(6/99)
y = Decimal(1/3)
result = x + y
print(result)

结果如下:

 

二、常用数学函数

 Python中提供一些数学函数帮助用户对数字进行运算和处理。Python中的数学函数有以下两种使用方式。

(1).Python中的常用内置数学函数。这类函数的数量不多,可以直接在程序中使用

(2).Math中的常用数学函数,Math为数学运算提供了对底层C函数库的访问,其函数种类多,功能较全,需要导入Math模块后才能在程序中调用。

常用内置数学函数

函数名称功能说明举例结果
abs(x)返回数字的绝对值abs(-10)10
pow(x,y)返回x**y运算后的值pow(2,3)8
round(x,y)返回浮点数x的四舍五入值,y 是指定的小数位数。当不提供 y 参数时,round将对 x 进行到最接近的整数值的四舍五入。round(1.23456,2)1.23
max(x1,x2,x3……)返回给定参数的最大值max(1,2,3)3
min(x1,x2,x3……)返回给定参数的最小值min(1,2,3)1

 Math中的常用数学函数

函数名功能例子结果
math.pow(x,y)返回x**y运算后的值math.pow(2,3)

16.0

math.ceil(x)用于返回大于或等于 x 的最小整数,向上取整math.ceil(2.1)3
math.exp(x)返回e的x次幂math.exp(2)

7.389056

09893065

math.fabs(x)返回数字的绝对值(常用于浮点数类型)math.fabs(-8.0)8.0
math.floor(x)返回小于或等于 x 的最大整数,向下取整math.floor(2.8)2
math.log(y,x)计算以 x 为底、y 为真数的对数

math.log(8, 2)

表示log2(8)

3
math.log10(y)计算以10为底、y为真数的对数math.log10(100)2
math.modf(x)返回x的整数和小数部分math.modf(3.6)(0.6000000000000001, 3.0)
math.sqrt(x)返回数字x的平方根math.sqrt(9.0)3.0
math.sin(x)计算给定角度 x(单位为弧度)的正弦值math.sin(3)0.1411200080598672
math.cos(x)计算给定角度 x(单位为弧度)的余弦值math.cos(3)-0.9899924966004454
math.tan(x)计算给定角度 x(单位为弧度)的正切值math.tan(0.785)0.9992039901050427

另外,Math中还有一些常用的数学常量,如e,pi等可以用。

E = math.e
pi = math.pi

三、特殊内置函数

3.1 内置函数介绍

内置函数(Built-In Functions,BIF)是 Python 的内置对象类型之一,封装在标准库模块__builtins__中,可以直接在程序中使用的,如input(),print(),abs(),sum()等。Python中的内置函数使用C语言进行了大量优化,推荐使用,提高效率。

我们可以使用help()函数来查看内置函数的用法

help(sum)

 结果如下:

3.2.1 range()函数 

 range() 函数返回一个整数序列的迭代对象,其语法为:

range(start,stop,step)

简单来说,它是一个用于生成一系列数字的函数。它通常用于迭代(循环),例如在循环中遍历一定范围内的数字。

它有三种用法:

  • 只提供一个参数时,它会生成从0开始,到该参数值之前的一系列数字(不包括该参数值本身)。
  • 提供两个参数时,第一个参数指定起始值,第二个参数指定结束值(不包括结束值本身)
  • 提供三个参数时,第一个参数指定起始值,第二个参数指定结束值(不包括结束值本身),第三个参数指定步长(即两个相邻数字之间的间隔)。

例如:

# 生成从0到4的一系列数字
for i in range(5):
    print(i,end=" ")

# 生成从2到6的一系列数字
for i in range(2, 7):
    print(i)

# 生成从1到10的奇数
for i in range(1, 11, 2):
    print(i,end=" ")

注意, range() 函数返回的是一个范围对象,而不是一个实际的列表。如果需要将其转换为列表,可以使用 list() 函数来实现。 

3.2.2 type()和isinstance()函数

 在Python中我们可以使用type(),isinstance()函数来判断一个对象的类型。

1.type(obj) : 接收一个对象obj作为参数,返回这个对象的类型

2.isinstance(obj,class): 判断接收的对象object 是否是给定类型class的对象 ,如果是,返回True,如果不是,返回False

例如:

# 3.2.2 type 和 isinstance
x = 5
print(type(x))

x = 5
print(isinstance(x, int))

y = 'Hello'
print(isinstance(y, str))

z = [1, 2, 3]
print(isinstance(z, (list, tuple)))  

总结:type返回对象的确切类型,而isinstance可以检查对象是否是某个类型或者其子类的实例。

区别:(在之后学习会提到现在看不懂没关系)

1.type()不会认为子类对象是一种父类类型,不考虑继承关系

2.isinstance()会认为子类对象是一种父类类型,考虑继承关系

3.2.3 eval()函数

 eval() 是一个内置函数,用于执行字符串中的有效Python表达式,并返回结果。

它的语法是:

eval(expression, globals, locals)

  • expression 是一个字符串,包含要执行的Python表达式。
  • globals 是一个字典,用于指定全局命名空间(可选参数)。
  • locals 是一个字典,用于指定局部命名空间(可选参数)。

 例如:

# 计算简单的数学表达式
result = eval("2 + 3 * 4")
print(result) 

# 使用局部变量执行表达式
x = 10
result = eval("x + 5")
print(result) 

 简单来说,eval()会将字符串转换成一个表达式,执行,并且返回这个表达式的值,后面的两个参数为搜索的范围,要么是局部,要么是全局。

3.2.4 map()函数

 map() 函数吧函数依次映射到序列或迭代器对象的每个元素上,并返回一个可迭代的map对象作为结果,其语法为:

map(function,iterable,……)

其中,function为被调用函数(暂时不理解没关系,简单理解函数就是有特定功能的一个东西),iterable为一个或多个序列。

 例如:

# 3.2.4 map

# 定义一个函数,用于对每个元素加1
def add_one(x):
    return x + 1

my_list = [1, 2, 3, 4, 5]


result = map(add_one, my_list)

# 将结果转换为列表并输出
print(list(result))  

简单来说,就是map会将每个元素都将函数用一遍,然后返回一个可迭代的map对象,在上述代码中,我们将迭代的对象用list()内置函数转换成列表,并用print函数打印输出。 

3.2.5 filter()函数

 filter() 函数用于过滤掉不符合条件的元素,返回一个迭代器对象,语法如下:

filter(function,iterable)

其中,function 为判断函数,iterable为可迭代对象

# 3.2.5 filter

# 定义一个函数,用于判断是否为偶数
def is_even(x):
    return x % 2 == 0

my_list = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]


result = filter(is_even, my_list)

print(list(result))  

 filter就是判断参数是否满足函数,满足函数就记录下来返回。可以理解为一个过滤器。

3.2.6 zip()函数

 zip()函数接收任意多个可迭代对象作为参数,将对象中对应的元素打包成一个元组,然后返回一个可迭代的zip对象,其语法为:

zip([iterable,...])

 其中,iterable为一个或多个迭代器

zip()函数会从每个可迭代对象中依次取出对应位置的元素,然后将这些元素组合成一个元组,并返回一个迭代器,该迭代器会生成所有这些元组。当输入的可迭代对象中的长度不同时,zip()函数会以最短的可迭代对象为准,不会生成超出最短长度的元组。 

例如:

# 3.2.6 zip

list1 = ['a', 'b', 'c']
list2 = [1, 2, 3]

# 使用 zip() 将两个列表中的元素组合成元组
result = zip(list1, list2)

# 将结果转换为列表并输出
print(list(result))  # 输出:[('a', 1), ('b', 2), ('c', 3)]

3.2.7 enumerate()函数

枚举函数enumerate()用于将一个可遍历的数据对象(如列表,元组或字符串)组合为一个索引序列,同时列出数据和数据下标,其语法为:

enumerate(sequence,start)

其中:

sequence:一个序列、迭代器或其他支持的迭代对象。

start:下标起始位置

例如:

# 3.2.7 enumerate

my_list = ['a', 'b', 'c', 'd', 'e']

# 使用 enumerate() 获取索引和对应的值
for index, value in enumerate(my_list):
    print(index, value)

在学C语言的时候,我们在结构体篇也见过枚举类型呢,是不是非常眼熟,如果你不懂什么是枚举可以点击链接跳转看看。

【C语言结构体】用户自定义类型--结构体,结构体传参,位段,联合体和枚举【图文详解】-CSDN博客icon-default.png?t=N7T8https://blog.csdn.net/sobercq/article/details/136383033?spm=1001.2014.3001.5501


感谢各位同伴的支持,本期python就讲解到这啦,如果你觉得写的不错的话,可以给个一键三连,点赞,关注+收藏,若有不足,欢迎各位在评论区讨论。      

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

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

相关文章

Partisia Blockchain:被严重低估的隐私区块链生态

在今年 3 月,隐私公链 Partisia Blockchain 迎来了重要的进展,该生态通证 $MPC 上线了交易所,目前 $MPC 通证可以在 Kucoin、Gate、BitMart、Bitfinex、Bitture 等平台交易,并将在不久后上线 MEXC 平台。 在上个月上线市场至今&am…

【Linux】进程间通信——system V版本 共享内存

目录 共享内存 原理 实践 shmget() 创建共享内存 shmctl() 删除共享内存 shmat() 挂接进程和共享内存 shmt() 进程和共享内存去关联 共享内存的特性 优势 劣势 用共享内存实现进程间通信 共享内存 原理 两个进程的PCB各自维护着一个进程地址空间。当两个进…

VsCode 安装Jupyter Notebook

VsCode 安装Jupyter Notebook 安装 1、打开 VSCode 编辑器,点击界面左端的【扩展】栏; 2、在【搜索框】中输入python,点击第一个Python,检查是否已经安装 python 插件,没安装的点击安装;已安装的继续第3步…

32单片机入门持续更新中

配套资料为野火霸道V2 初识 STM32 4.1 什么是 STM32 STM32,从字面上来理解,ST 是意法半导体,M 是 Microelectronics 的缩写,32 表示 32 位,合起 来理解,STM32 就是指 ST 公司开发的 32 位微控制器。在如今…

C++数据结构与算法——动态规划子序列系列

C第二阶段——数据结构和算法,之前学过一点点数据结构,当时是基于Python来学习的,现在基于C查漏补缺,尤其是树的部分。这一部分计划一个月 (2024.1.30-2024.4.10已完结),任务量确实有点大,包括春…

Mysql主从同步原理

master每次提交事务时都会将数据变更记录到二进制文件BINLOG中,binlog文件主要记录除查询以外的DDL和DML,slave的IO线程读取master的BINLOG文件,并写入中继日志Relay log文件中,然后slave的SQL线程读取relay log文件并重做事务映射…

核心api实操-Activiti7从入门到专家(5)

背景 上一节已经搭建了,具体的开发环境,数据库,并且找了一个可以用bpmnjs流程设计器,这一些,我们对核心api做个基础的实操,有个感性的认知,另外对数据库和基本数据流动有个理解。 部署 模板部…

Deblurring 3D Gaussian Splatting去模糊3D高斯溅射

Abstract 摘要 Recent studies in Radiance Fields have paved the robust way for novel view synthesis with their photorealistic rendering quality. Nevertheless, they usually employ neural networks and volumetric rendering, which are costly to train and impede…

Web中使用Weblogic用户

WebLogic用户,组设置 1. 登录weblogic console, domain结构中选择Security Realms,显示安装时默认创建的Realm : myrealm 2. 点击myrealm, 选择 users and Group, 追加用户和组 选择既存的权限组追加到新规的组中,赋予…

【jumpserver-02】离线安装jumpserver

https://docs.jumpserver.org/zh/v3/installation/setup_linux_standalone/offline_install/#1 环境准备 mysql数据库 create database jumpserver default character set utf8mb4;create user jumpserver% identified by jumpserver;grant all on jumpserver.* to jumpserver…

Arrow Path (DFS BFS)

//新生训练 #include <iostream> #include <algorithm> #include <cstring> #include <queue> using namespace std; using PII pair<int, int>;const int N 2e5 5; const int inf 0x3f3f3f3f; int n, m; int l; string s[2]; int dx[] {0,…

CorelDRAW苹果版提示请重新连接具有文件位置的设备...的解决方法

今天小编想更新一下CorelDRAW2024苹果版&#xff0c;但升级完成依次提示“请重新连接具有文件位置的设备&#xff0c;或选择新文件夹。同时&#xff0c;内容将保存在Corel 默认位置。您可以在恢复文件位置之后移动内容”和“尝试重新启动计算机和应用程序。如果这些操作还是不能…

LeetCode-64. 最小路径和【数组 动态规划 矩阵】

LeetCode-64. 最小路径和【数组 动态规划 矩阵】 题目描述&#xff1a;解题思路一&#xff1a;动态规划五部曲。定推初遍举解题思路二&#xff1a;动态规划优化空间&#xff0c;直接改grid解题思路三&#xff1a;dfs 题目描述&#xff1a; 给定一个包含非负整数的 m x n 网格 …

SpringBoot入门(Hello World 项目)

SpringBoot关键结构 1.2.1 Core Container The Core Container consists of the Core, Beans, Context, and Expression Language modules. The Core and Beans modules provide the fundamental parts of the framework, including the IoC and Dependency Injection featur…

掌握JMeter HTTP 请求头:简单易懂

在深入研究 JMeter 的过程中&#xff0c;任何涉及性能测试或接口验证的专业人员都会认识到&#xff0c;合理配置HTTP请求头部信息是实现精确测试的关键步骤之一。不同情景下&#xff0c;如数据提交形式的不同&#xff08;例如 JSON、XML 等&#xff09;&#xff0c;或是需要通过…

第二十六周代码(总结 + 查缺补漏)

蓝桥云课&#xff1a;刷题数量通过139题&#xff0c;尝试解决&#xff08;未做出&#xff09;18题。 其中蓝桥杯往年真题74题&#xff0c;尝试解决&#xff08;未做出&#xff09;6题算法模板题5题经典算法题20题&#xff0c;尝试解决&#xff08;未做出&#xff09;1题算法赛…

05—面向对象(上)

一、面向对象编程 1、类和对象 &#xff08;1&#xff09;什么是类 类是一类具有相同特性的事物的抽象描述&#xff0c;是一组相关属性和行为的集合。 属性&#xff1a;就是该事物的状态信息。行为&#xff1a;就是在你这个程序中&#xff0c;该状态信息要做什么操作&#x…

PolarDB for PostgreSQL 有意思吗? 有意思呀

开头还是介绍一下群&#xff0c;如果感兴趣PolarDB ,MongoDB ,MySQL ,PostgreSQL ,Redis, Oceanbase, Sql Server等有问题&#xff0c;有需求都可以加群群内有各大数据库行业大咖&#xff0c;CTO&#xff0c;可以解决你的问题。加群请联系 liuaustin3 &#xff0c;&#xff08;…

未佩戴厨师帽识别检测 厨房管理系统 自动监测未佩戴厨师帽行为 实时报警

在厨房环境中&#xff0c;佩戴厨师帽对于食品安全和卫生至关重要。厨师帽能够有效地防止头发、皮屑等杂质掉入食物中&#xff0c;减少了食品受到污染的可能性&#xff0c;从而保障了食品安全。特别是在学校、餐厅等场景中&#xff0c;对于未佩戴厨师帽的检测更是必不可少。相关…

《哈迪斯》自带的Lua解释器是哪个版本?

玩过《哈迪斯》&#xff08;英文名&#xff1a;Hades&#xff09;吗&#xff1f;最近在研究怎么给这款游戏做MOD&#xff0c;想把它的振动体验升级到更高品质的RichTap。N站下载了一些别人做的MOD&#xff0c;发现很多都基于相同的格式&#xff0c;均是对游戏.sjon文件或.lua文…