吐血整理Python 常用的数学运算与统计函数(附视频讲解)
Posted Amo Xiang
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了吐血整理Python 常用的数学运算与统计函数(附视频讲解)相关的知识,希望对你有一定的参考价值。
目录
一、abs 函数–获取数字的绝对值 视频讲解
abs() 函数用于获取数字的绝对值,其语法格式如下:
abs(x)
参数说明:
- x:表示数值,参数可以是整数、浮点数或者复数;
- 返回值:返回数字的绝对值。如果参数是一个复数,则返回复数的模。
补充说明:设复数 z=a+bi(a,b∈R),其中规定 i 为虚数单位,且(a、b是任意实数),我们将复数中的实数a称为复数z的实部(real part),记作Re z=a;实数b称为复数z的虚部(imaginary part),记作 Im z=b。当a=0且b≠0时,z=bi,我们就将其称为纯虚数。将复数的实部与虚部的平方和的正的平方根的值称为该复数的模,记作∣z∣。复数z的模|z|=
a
2
+
b
2
\\sqrt[]{a^2+b^2}
a2+b2
,它的几何意义是复平面上一点(a,b)到原点的距离。|z|2=(a+bi)(a-bi) 。例:
计算1:若 z=1+i,则 |z^2-2z| = ?
两个实部相等,虚部互为相反数的复数互为共轭复数(conjugate complex number)。复数z的共轭复数记作 z ‾ \\overline{z} z
Python 中的复数与数学中的复数的形式完全一致,都是由实部和虚部组成,并且使用 j 或 J 表示虚部。当表示一个复数时,可以将实部和虚部相加,例如,一个复数,实部为 3.14,虚部为 12.5j,则这个复数为 3.14+12.5j。如下图所示:
【示例1】获取整数与浮点数的绝对值。在获取绝对值时,比较常见的数值就是整数与浮点数,使用abs()函数获取整数与浮点数绝对值的示例代码如下:
In [1]: abs(520) # 求整数绝对值
Out[1]: 520
In [2]: abs(-88) # 求负数绝对值
Out[2]: 88
In [3]: abs(-88.88) # 浮点负数绝对值
Out[3]: 88.88
In [4]: abs(0) # 求0绝对值
Out[4]: 0
【示例2】获取复数的模。
In [5]: abs(1-2j) # 获取1-2j复数的模
Out[5]: 2.23606797749979
In [6]: abs(1+5j)
Out[6]: 5.0990195135927845 # 获取1+5j复数的模
In [7]: abs(6*8j) # 获取6*8j复数的模
Out[7]: 48.0
In [8]: abs(-1-1j) # 获取-1-1j复数的模
Out[8]: 1.4142135623730951
【示例3】输出绝对值不大于3的所有整数。
num_list = [-3, -2, -1, 0, 1, 2, 9] # 创建一组整数列表
for num in num_list: # 遍历列表元素
if abs(num) <= 3: # 绝对值不大于3
print(num, end=" ") # 输出:-3 -2 -1 0 1 2
【示例4】abs()函数与math.fabs()函数的比较。
二、divmod 函数–获取两个数值的商和余数 视频讲解
divmod() 函数用于返回两个数值(非复数)相除得到的商和余数组成的元组。其语法格式如下:
divmod(x, y)
参数说明:
- x:被除数;
- y:除数;
- 返回值:返回由商和余数组成的元组。
【示例1】获取商和余数的元组。
print(divmod(9, 2)) # 被除数为9,除数为2 ==>(4, 1)
print(divmod(100, 10)) # 被除数为100,除数为10==>(10, 0)
print(divmod(15.5, 2)) # 被除数为15.5,除数为2==>(7.0, 1.5)
"""
说明:通过divmod()函数获取商和余数的元组时,元组中的第一个元素为商,第二个元素为余数。
提示:如果参数x和y都是整数,相当于(a//b,a%b)
如果参数x或y是浮点数,相当于(math.floor(a/b),a%b)
"""
【示例2】商和余数解决图书拆包问题。
示例代码如下:
books = [845, 1089, 988, 432, 675, 3246] # 图书册数
num = 16 # 每包16册
for b in books:
result = divmod(b, num) # 计算商和余数
# 输出结果
print(str(b) + '拆分为: ' + str(result[0]) + '包' + str(result[1]) + '册')
【示例3】负数取余问题。
print(divmod(30, -8)) # (-4, -2)
print(divmod(-30, -8)) # (3, -6)
print(divmod(-30, 8)) # (-4, 2)
【示例4】将时间秒数转换为"时:分:秒"的形式。
import datetime
seconds = 3888 # 秒数
# 第一种方法
m, s = divmod(seconds, 60)
h, m = divmod(m, 60)
# 第一种方式: 1:04:48
print('第一种方式:', f'{h:d}:{m:02d}:{s:02d}') # 格式化输出
# 第二种方法:第二种方式: 1:04:48
se = str(datetime.timedelta(seconds=seconds))
print('第二种方式:', se)
三、len 函数–获取对象的长度或项目个数
len() 函数的主要功能是获取一个(字符、列表、元组等)可迭代对象的长度或项目个数。其语法格式如下:
len(s)
参数说明:
- 参数 s:要获取其长度或者项目个数的对象。如字符串、元组、列表、字典等;
- 返回值:对象长度或项目个数。
【示例1】获取字符串长度。
# 字符串中每个符号仅占用一个位置,所以该字符串长度为34
str1 = '今天会很残酷,明天会更残酷,后天会很美好,但大部分人会死在明天晚上。'
# 在获取字符串长度时,空格也需要占用一个位置,所以该字符串长度为10
str2 = 'hello word'
print('str1字符串的长度为:', len(str1)) # 打印str1字符串长度
print('str2字符串的长度为', len(str2)) # 打印str2字符串长度
# 打印str2字符串去除空格后的长度9
print('str2字符串去除空格后的长度为:', len(str2.replace(' ', '')))
【示例2】获取列表长度。
# 在获取列表长度时,len函数不会在意列表内元素的类型
list_ = [1, 2, 3, 4, '123', 2.15]
# 同时定义两个元素类型不同的列表
list1, list2 = [1, 2, 3], ['a', 'b', 'c']
list3 = ['库里', '杜兰特', '詹姆斯', '哈登', '威少'] # 定义一个列表
print('list列表的长度为 : ', len(list_)) # 打印list列表长度
print('list1列表的长度为: ', len(list1)) # 打印list1列表长度
print('list2列表的长度为:', len(list2)) # 打印list2列表长度
print('共有', len(list3), '名球员') # 获取列表元素个数
# 获取列表下标为1~4范围的长度,不包含下标为4的元素
print('列表中指定元素范围的长度为:', len(list_[1:4]))
【示例3】获取元组长度。
tuple1 = (1, 11, 111, 1111, 11111) # 创建元素长度不同的元组
print('tuple1元组长度为:', len(tuple1)) # 打印tuple1元组长度
print('元组中指定元素范围的长度为:', len(tuple1[1:3])) # 打印tuple1元组指定元素范围的长度
# 创建星期英文元组
tuple2 = ('Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday')
print('tuple2元组中元素长度最大为:', max(len(i) for i in tuple2)) # 打印tuple2元组中长度最大值
# 打印tuple2元组中长度最大的元素
print('tuple2元组中长度最大的元素为:', max(tuple2, key=lambda i: len(i)))
# 打印tuple2元组中长度最小的元素
print('tuple2元组中长度最小的元素为:', min(tuple2, key=lambda i: len(i)))
# 创建国际旅游胜地前四名的二维元组
tuple3 = (('威尼斯', 1), ('阿姆斯特丹运河', 2), ('马尔代夫', 3), ('迪拜', 4))
print('二维元组tuple3的长度为:', len(tuple3)) # 打印二维元组的长度
# 打印二维元组中旅游胜地名称最长的元组
print('旅游胜地名称最长的元组为:', max(tuple3, key=lambda i: len(i[0])))
【示例4】获取字典长度。
# 人物基本信息
dict_name = {'Name': 'Aaron', 'Age': 18, 'height': 1.72, 'weight': 55, 'sex': 'g'}
print('dict_name字典长度度为:', len(dict_name)) # 打印dict_name字典长度
# 使用dict()函数创建一个字典
dictionary = dict((('邓肯', '石佛'), ('吉诺比利', '妖刀'), ('帕克', '跑车')))
print('字典:', dictionary) # 输出字典
print('字典中的元素个数为:', len(dictionary)) # 获取字典中的元素个数
# 某淘汰比赛中,前五名的参赛人员与对应编号
dict_info = {'17123': {'name': 'Lee'},
'121234': {'name': 'Jeff'},
'153': {'name': 'Rodriguez'},
'16423': {'name': 'Jackson'},
'1344349': {'name': 'Williams'}}
# 打印参赛编号最长的那位参赛者名称
print('获取数据中参赛编号最长的那位参赛者名称:',
max(dict_info.items(), key=lambda i: len(i[0]))[1].get('name'))
# 打印赛者名称最长的那位参赛者名称
print('获取参赛者名称最长的那位参赛者名称:',
max(dict_info.items(), key=lambda i: len(i[1].get('name')))[1].get('name'))
【示例5】计算一个字符串中包含“aeiou”这5个字符的数量。
import re
def count_vowels(str):
# 使用正则表达式匹配所有包括aeiou的字符,然后计算长度
return len(re.findall(r'[aeiou]', str, re.IGNORECASE))
print(count_vowels('foobar')) # 3
print(count_vowels('gym')) # 0
【示例6】判断列表中的元素是否有重复的。
def all_unique(lst):
# 先将列表转化为集合,利用集合去重功能,删除重复元素,然后再和原来的列表对比
return len(lst) == len(set(lst))
x = [1, 1, 2, 2, 3, 2, 3, 4, 5, 6]
y = [1, 2, 3, 4, 5]
print(all_unique(x)) # False
print(all_unique(y)) # True
【示例7】计算字符串的字节长度。
def byte_size(string):
return len(string.encode('utf-8')) # 使用encode()函数设置编码格式
print(byte_size('Hello World')) # 11
print(byte_size('人生苦短,我用Python')) # 27
【示例8】根据指定字符长度添加符号或字符。
# 古诗字符串
str_text = '花开不并百花丛独立疏篱趣未穷宁可枝头抱香死何曾吹落北风中'
list_text = [] # 保存筛选诗句的列表
# 通过字符串长度遍历字符串文字下标,由于0求余等于0所以需要从1开始并加1
for i in range(1, len(str_text) + 1):
# 通过指定字符串下标的方式将字符串中文字添加至列表中
list_text.append(str_text[i - 1])
if i % 7 == 0: # 每七个字为一句,此处求满足七字条件
if i % 2 == 0: # 偶数添加句号
list_text.append('。\\n')
else: # 奇数添加逗号
list_text.append(',\\n')
print(''.join(list_text)) # 打印将列表元素拼接成字符串
程序运行结果如下图所示:
【示例9】统计每天手机消费账单数量。
# 模拟账单数据
bill = {'今天': [{'time': '07:40', '金额': -6.5, '订单号': '22001407'},
{'time': '07:54', '金额': -21, '订单号': '22001430'},
{'time': '08:22', '金额': -11, '订单号': '22101511'}],
'昨天': [{'time': '07:40', '金额': -6.5, '订单号': '22001447'}],
'前天': [{'time': '07:00', '金额': -13.2, '订单号': '22001431'},
{'time': '07:26', '金额': -10, '订单号': '22001433'},
{'time': '08:05', '金额': -3, '订单号': '22001561'},
{'time': '08:22', '金额': -2.5, '订单号': '22001766'}]}
for key in bill.keys(): # 遍历都有哪天的账单
print(key, '消费了', len(bill.get(key)), '笔账单!') # 打印每天账单的数量
程序运行结果如下图所示:
四、max 函数–获取可迭代对象(或元素)的最大值
max() 函数是 python 开发中使用较多的函数,主要功能为获取传入的多个参数的最大值,或者传入的可迭代对象(或之中的元素)的最大值。其语法格式如下:
max(iterable, *[, key, default])
# max(arg1, arg2, *args[, key])
参数说明:
以上是关于吐血整理Python 常用的数学运算与统计函数(附视频讲解)的主要内容,如果未能解决你的问题,请参考以下文章吐血整理!140种Python标准库第三方库和外部工具都有了
吐血整理Python体系练手项目500例(附源代码),练完可就业