当前位置: 首页 > news >正文

数学标准库

01.Math库

math.ceil(x)向上取整

math.floor(x)向下取整

math.pi数字π的取值

math.gcd()两个数的最大公约数

math.factorial()求阶乘

02.collections

1.Counter:计数器

①用于计数,看做dict

from collections import Counter
a=["apple","banana","apple","cat","cat","cat","dog"]
b=Counter(a)
print(type(b))
print(b)

②定义方法

Counter(可迭代对象)

from collections import Counter

a=Counter()    #空Counter
a=Counter("Hello World") #统计每个字符出现次数
a=Counter([1,2,3,1,2]) #统计每个元素出现次数

Counter(字典)

#利用字典初始化每个元素(key)和出现次数(value)

a=Counter({'a':1,'b':2,'c':3})
a=Counter(a=1,b=2,c=3)

③常用函数

most_common(k):筛选出现频率topk

elements():返回一个迭代器,每个元素重复对应次数

clear():清空

大部分字典的功能均可以使用

数学运算

2.deque:双端队列

a=deque([1,2,3,4])

大部分功能与list类似,但是删除和插入操作比list更高效

②特有的功能

a=deque([1,2,3,4,1,4,2,3])

a.rotate(2) #[2,3,1,2,3,4,1,4]

#向右循环移动2步,如果n是负数,就向左循环

3.defaultdict:有默认值的字典

from collections import defaultdict
d=defaultdict(int)
print(d['x'])#0
d=defaultdict(list)
print(d['x'])#[]
d=defaultdict(set)
print(d['x']) #set()
d=defaultdict(dict)
print(d['x']) #{}

4.OrderedDict:有序字典

①与字典相同,key按照插入的顺序排序

②popitem()函数:删除最后一个元素然后返回

OrderedDict:可以指定参数last,last默认为True,删除最后一个,否则删除第一个

from collections import OrderedDict
data=[('a',1),('b',2),('c',3)]
d=OrderedDict(data)
print(d)
while len(d)!=0:
print("删除的元素为:",d.popitem(False))
print(d)
#从首开始删的

③move_to_end(key,last=True)函数:

OrderedDict将key移动到任一端。last=True表示右端,否则为左端。key不存在则报错

from collections import OrderedDict
data=[('a',1),('b',2),('c',3)]
d=OrderedDict(data)

d.move_to_end('a')

d.move_to_end('c',False)

03.heapq

堆:完全二叉树,每个节点小于等于子节点(默认为最小堆),每个节点k都有两个字节点2k+1,2k+2.

使用list表示一个堆

1.将无序list 转换成最小堆

heapq.heapify(a)

2.最小堆a中添加元素x:

heapq.heappush(a,x)

3.弹出并返回最小元素

heapq.heappop(a)

4.弹出并返回最小元素,同时添加元素x

heapq.heapreplace(a,x)

04.functool

1.partial:“冻结”某些函数的参数或者关键字参数,然后返回一个函数

2.functools.partial(func,*args,**keywords)

func:需要被扩展的函数,返回的函数其实是一个类的func函数

*args:需要被固定的位置参数

**kwargs:需要被固定的关键字参数

from functools import partial
def Add(a,b,c):
print(a+b+c)
add_fix_c=partial(Add,c=5)
#用关键字固定
add_fix_c(2,3)

05.itertools

一、无限迭代器

1.生成长度为无限的迭代器

2.count(start=0,stp=1):创建一个迭代器,它从start值开始,返回均匀间隔的值

3.cycle(iterable):创建一个迭代器,循环遍历iterable中所有元素

4.repeat(object[,times]):创建一个迭代器,如果没有指定times则无限循环遍历object,否则遍历指定次数。

from itertools import count,cycle,repeat
for x in repeat("hello",100):
print(x)

二、有限迭代器

1.accumulate(iterable[,func]):创建一个迭代器,返回累加汇总值或其他双目运算函数的累计结果值

accumulate([1,2,3,4,5]) 求依次累积的和--->1 3 6 10 15

accumulate([1,2,3,4,5],max)    前面所有的最大值--->1 2 3 4 5

accumulate([1,2,3,4,5],operator.mul)  前面的乘积 --->1 2 6 24 120

from itertools import accumulate
import operator
a=[3,1,2,4,5]
b=list(accumulate(a,operator.mul))
print(b)

2.chain():合并多个迭代器

chain('ABC','DEF')--->A B C D E F

三、排列组合迭代器

1.product(*iterables,repeat=1):可迭代对象的笛卡尔积

  • *iterables:表示多个可迭代对象
  • repeat:表示这些可迭代序列重复的次数

from itertools import product

ans=list(product([1,2,3],repeat=3))

2.permutations(iterable,r=None):由iterable元素生成的长度为r的排列,如果r未指定或为None,r默认设置为iterable长度

from itertools import permutations

a=list(permutations([1,2,3,4],r=2))
for x in a:
print(x)

3.combinations(iterable,r):返回由输入iterable中元素组成长度为r的子序列

from itertools import permutations,combinations

a=list(combinations([1,2,3,4],r=2))

http://www.dtcms.com/a/446068.html

相关文章:

  • 怎么做跳转不影响原网站排名云抢购网官方网站
  • 漳州手机网站建设公司陕西专业网站建设哪家好
  • 利用 VsCode + EIDE 进行嵌入式开发(保姆级教程)
  • 长春企业网站制作优化微商好货源app下载
  • PlayerChoice系统介绍
  • 网站要实名认证旅游网站建设方案之目标
  • [ SpringWeb ] 搭建和配置
  • 高层次综合hls设计第一章
  • Docker 启动 Easysearch 时自定义初始密码的几种方式
  • 15.C++三大重要特性之继承
  • AI 训练大显存配置实战:24G 显存(RTX 4090)如何配 32G 内存?—— 从 “显存挪用” 到 “效率翻倍”
  • JVM即时编译
  • 【JVM】——结构组成和垃圾回收
  • 建站模板推荐设计公司的企业使命
  • php网站怎么做百度做网站不给FTP密码
  • 自由学习记录(105)
  • 聚类之KMeans
  • 汽车企业管理系统自己的网站怎么做关键词优化
  • 大模型落地的四大核心引擎:从技术突破到产业重构
  • find 命令使用介绍
  • 蓝桥杯Python备考全攻略:从入门到精通
  • 数据结构初阶(第六讲)单链表的功能实现
  • 做付费推广哪个网站好工作室网页模板
  • 合川网站建设天津自助建站
  • 元模型训练中平衡历史数据与实时市场变化的关系
  • 新手直播冷场难破?场景模拟工具解决测试与练手难题
  • 半球陀螺仪吸气剂热激活真空共晶炉
  • C++多态特性详解
  • 嵌入式第六十七天(SPI子系统架构)
  • MVC 视图