递归,re,time,random
递归函数
1.在函数中调用自己
2.超过递归的最大深度报错,递归的最大深度:998大概
3.递归的缺点:占内存
4.优点:代码简单
import sys
sys.setrecursionlimit(2000)#修改最大深度,#不要随意修改
实现斐波那契数列
#斐波那契数列 1,1,2,3,5,8 后一项为前两项的和
def fib(n):
if n==1 or n==2:
res=1
else:
res = fib(n-1)+fib(n-2)
return res
print(fib(6)) #循环实现求斐波那契数列
def fib(n):
a,b = 1,1
for i in range(0,n):
a,b = b,a+b
print(a)
fib(5)
递归实现二分查找算法
二分查找算法
def fin(li,searth,start=0,end=None):
end = len(li) if end is None else end
min = (end-start)//2+start
if start<=end:
if start == end and searth != li[start - 1]:
print('没有找到该数据,可能不在列表中')
elif searth<li[min]:
fin(li,searth,start=start,end=min-1)
elif searth>li[min]:
fin(li,searth,start=min+1,end=end)
else:print(min)
else:
print('没有找到该数据,可能不在列表中')
fin([1,2,3,4,5,6,7,8,9],80)
递归实现阶乘
def factorial(n):
if n==1:
res = 1
else:
res = n*factorial(n-1)
return res
print(factorial(3))
re模块
正则表达式
做字符串匹配的一种规则
正则规则
字符组:[],在同一个位置上可能出现的字符组成一个字符组
正则规则:
[0-9]:匹配数字
[a-z]:匹配小写字母
[A-Z]:匹配大写字母
.:匹配除换行符以外的任意字符
\w:匹配数字字母下划线(word)
\s:匹配任意的空白符(space)
\d:匹配任意数字(digit)
\W:匹配非数字字母下划线
\S:匹配任意非空白符(space)
\D:匹配任意非数字(digit)
\n:匹配换行符
\t:匹配制表符
\b:匹配一个单词的结尾
^a:匹配字符串的开头,以a开头
$a:以a结尾
a|b:匹配a或b
匹配次数(默认贪婪匹配,尽可能多的匹配)
*:匹配多次或0次
+:匹配多次
?:匹配0次或者1次,加在量词后面表示非贪婪匹配(尽可能少的匹配)
{n}:匹配n次,必须是n次
{n,}:匹配n次或更多
{n,m}:匹配n到m次
分组():对多个字符整体进行统一的约束
r'\d':表示不对字符串转义
.*?:一个也不匹配
[^]:除了字符组里面的都匹配
\\w:转义
re模块的常用方法
findall,search,match
import re
res = re.findall('[j]','jcc jcc')#返回所有匹配的元素放在列表中
print(res)#分组优先
res2 = re.search('c','jcc jcc')#从前往后匹配,找到一个符合条件的就返回,返回的变量需要调用group方法才能得到,如果没有匹配的内容,返回None
print(res2.group())
取分组中的内容 import re
name = 'name'
res = re.search('\d(?P<name>\D+)+','iwuedh13245isdbc')
print(res.group(name))
print(res.group(1))
res3 = re.match('[ab]','b')#从头开始匹配,如果从头开始可以匹配上,就返回一个变量,调用group方法获取
print(res3.group()) # split:根据正则表达式来分割
res4 = re.split('[ab]','abcdhyt')
# sub:根据规则替换
res5 = re.sub('\d','a','uyahsgdbaaa',1)
collections模块
python中的扩展数据类型
namedtuple
namedtuple 可命名元组
from collections import namedtuple
Point = namedtuple('point',['x','y'])
p = Point(1,2)
print(p.x,p.y)
deque
#deque 队列 先进先出
import queue
q = queue.Queue()
q.put(10)
print(q.get())
# get的时候队列中如果没有值,则该程序会阻塞
print(q.qsize())#判断队列中是否有值 #deque 双管队列,可以从两端放数据和取数据,可以插队
from collections import deque
q = deque([1,2])
q.append(3)#从后面放数据
q.appendleft(4)#从前面放数据
q.pop()#从后面取数据
q.popleft()#从前面取数据
orderdDict
#有序字典 orderdDict 比较占内存
from collections import OrderedDict
od = OrderedDict([('a',1),('b',2)])
# key是有序的 # defaultDict 字典中的每一个key值都有默认值
from collections import defaultdict
my_dict = defaultdict(list(1))
时间模块
时间的三种表示形式
# 时间的表示方式 # 1.时间戳(timestamp)返回的是float类型:计算机识别
time.time() # 2.格式化时间(format string):人看
time.strftime('%Y-%m-%d %H:%M:%S') # 3.结构化时间(struct_time):做计算
year = time.localtime().tm_year
形式之间的转换
# 时间戳-->结构化
time.time()
time.localtime()
time.gmtime()
# 结构化-->时间戳
time.mktime(time.localtime())
# 格式化-->结构化
time.strptime('2012-12-11','%Y-%m-%d')
# 结构化-->格式化
time.strftime('%Y-%m-%d',time.localtime(200000)) time.asctime()#显示的很全面
import time
time.sleep(1)#让程序在此处停留
time.time()#返回时间
random模块
# random模块 随机数模块
import random
random.random()#返回一个大于0小于1的小数
random.uniform(1,3)#返回一个大于1小于3的小数
random.randint(1,5)#返回随机1到5,包含5之间的整数
random.randrange(1,5,2)#随机返回1-10之间的整数,不包括10,可指定步长
random.choice([1,'',[1,2]])#随机选择一个返回 1或者’23‘或者[1,2]
random.sample([1,2,3,4],2)#任意两个元素
random.shuffle([1,2,3,4,5,6])#打乱次序
递归,re,time,random的更多相关文章
- 【Warrior刷题笔记】剑指offer 6 24 35. 三道题,让你学会链表递归迭代辅助栈
题目一 从尾到头打印链表 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/cong-wei-dao-tou-da-yin-lian-biao-l ...
- Python快速排序
快排,取一个key值,一般取第一个即可,将小于key的放到左边,大于key的放到右边,递归实现 import random def quicksort(data, low = 0, high = No ...
- java实现随机四则运算
使用JAVA编程语言,独立完成一个包含3到5个数字的四则运算练习,软件基本功能要求如下: 程序可接收一个输入参数n,然后随机产生n道加减乘除练习题,每个数字在 0 和 100 之间,运算符在3个到5个 ...
- Python 基础算法
递归 时间&空间复杂度 常见列表查找 算法排序 数据结构 递归 在调用一个函数的过程中,直接或间接地调用了函数本身这就叫做递归. 注:python在递归中没用像别的语言对递归进行优化,所以每一 ...
- [置顶]
Isolation Forest算法实现详解
本文算法完整实现源码已开源至本人的GitHub(如果对你有帮助,请给一个 star ),参看其中的 iforest 包下的 IForest 和 ITree 两个类: https://github.co ...
- Isolation Forest算法实现详解
本文介绍的 Isolation Forest 算法原理请参看我的博客:Isolation Forest异常检测算法原理详解,本文中我们只介绍详细的代码实现过程. 1.ITree的设计与实现 首先,我们 ...
- python中的一些算法
两个基础知识点:递归和时间复杂度 递归 递归函数的特点:自己调用自己,有结束条件,看下面例子: def fun1(x): """无结束条件,报错""& ...
- python实现经典的排序算法
排序 关注公众号"轻松学编程"了解更多. 1.冒泡排序 基本思想:比较相邻的元素大小,将小的前移,大的后移,就像水中的气泡一样,最小的元素经过几次移动,会最终浮到水面上.原地排序, ...
- python学习笔记(七)- 递归、python内置函数、random模块
1.函数的不固定参数: #参数不是必填的.没有限制参数的个数.返回参数组的元组 def syz(*args): #参数组,不限制参数个数 #‘args’参数的名字可以随便命名 print(args) ...
随机推荐
- boost的named_mutex的一些坑
最近遇到一个问题,程序在a用户下运行后,然后注销windows,登陆b用户,发现程序奔溃,抓了下堆栈,发现了boost的named_mutex一些细节,记录下 #include <boost/i ...
- python远程执行dos命令
https://blog.csdn.net/huaihuaidexiao/article/details/5543240 https://blog.csdn.net/bcbobo21cn/articl ...
- 201772020113李清华《面向对象程序设计(java)》第九周学习总结
1.实验目的与要求 (1) 掌握java异常处理技术: (2) 了解断言的用法: (3) 了解日志的用途: (4) 掌握程序基础调试技巧: 2.实验内容和步骤 实验1:用命令行与IDE两种环境下编辑调 ...
- TinkPHP框架学习-04命名空间
1-----命名空间 2-----调用其他控制器的方法 3-----U()函数 一命名空间 ①看做是虚拟目录 --ThinkPHP/Library 初始命名空间 --在Library文件夹下的所有文件 ...
- 深度学习原理与框架- tf.nn.atrous_conv2d(空洞卷积) 问题:空洞卷积增加了卷积核的维度,为什么不直接使用7*7呢
空洞卷积, 从图中可以看出,对于一个3*3的卷积,可以通过使用增加卷积的空洞的个数,来获得较大的感受眼, 从第一幅图中可以看出3*3的卷积,可以通过补零的方式,变成7*7的感受眼,这里补零的个数为1, ...
- Centos7 操作系统 mysql5.7 配置远程登陆操作
Centos7 操作系统: mysql5.7 配置远程登陆操作: 首先登陆服务器,进入数据库: mysql -u root -p show databases; use mysql; show tab ...
- laravel5.6上传图片
第一种:修改config里边的filesystems.php文件,在disks中加入下列代码 'local' => [ 'driver' => 'local', 'root' => ...
- IAR软件的使用
STM32标准外设库下载 官网下载链接(需要ST账号登陆): http://www.st.com/content/st_com/en/products/embedded-software/mcus-e ...
- EasyUI 1.3.2 中 Combobox自动检索 键盘上下选择Bug问题
EasyUI 自带的Combobox控件,提供了下拉列值自动检索功能. 在用到的EasyUI 1.3.2版本中还是有点问题,在键盘上下键移动选择过程中只能定位在第一个,不能正常向下移动 问题解决方式: ...
- Spring引入外部项目Junit 报ClassNotfound问题
https://blog.csdn.net/sheng_Mu555/article/details/80465679 用它这个方法可以了 所以大家可以过去看一下哈哈