python 模块&内置函数

import sys

import sys
sys.setrecursionlimit(100000)

为什么要设置递归

如果一个函数直接或通过它调用的其他函数调用自身,那么它是递归的。
虽然递归是构建算法的一种有用的方法,但它可能会占用大量的资源。每次调用函数时,他就会创建一些局部状态(局部变量),内存空间将一直使用,直到函数最终会返回。如果你的递归调用深度达到一百万,那就是内存中的一百万个局部帧。
风险在于递归会炸毁堆栈框架或进程内存,从而导致代码出现硬故障。这是一个非常糟糕的错误,因为整个程序退出时没有清理的能力。即使程序没有崩溃,他会占用大量内存,影响系统的其他部分。可能会有更多的交换和更糟糕的情况,linuxoom杀手可以随机地杀死进程,试图为内核获取资源。
为减少意外递归或错误算法本身不能正确地限制风险,python对递归进行了限制。但是开发人员可以通过
sys.setrecursionlimit(some_huge_number)来覆盖这个限制,在这种情况下,任何不好的东西都会出现在他们头上

from collections import defaultdict

collections 模块常用类型

  • 默认字典 (defaultdict)
    dict 的子类,可以调用提供默认值的函数
  • 双向队列(deque)
  • 计数器(Counter)
  • 有序字典(OrderdDict)
  • 可命名元组(namedtuple)

import 和 from import的区别

import XX导入模块对于模块中的函数,每次调用需要“模块.函数”来用。
from XX import fun直接导入模块中某函数,直接用fun()就可以用。

import os

os模块

python中的heapq模块

python 的 heapq 模块提供了对(最小)堆的建立和使用

堆实际就是一个是数组,在物理结构(内存)上是连续存储的,逻辑上数据与数据之间的关系是二叉树
heapq 堆数据结构最重要的特征是 heapq[0]永远是最小的元素
heapq模块
heapq.heappushpop(heap,item)
将item添加到堆中,并从和heap中删除最小项。

内置函数

enumerate()

将一个可遍历的数据对象(e.g. 列表、元组、字符串)组合为一个索引序列,同时列出数据和数据下标。一般用在for 循环中。
enumerate(sequence, [start=0])

sort()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值