2018.12.13 今日所学
Posted zty1304368100
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了2018.12.13 今日所学相关的知识,希望对你有一定的参考价值。
今日所学:
1. 昨日内容补充
repr()显示出字符串的官方表示形式
ord(元素) 查看编码的位置
chr(编码) 查看编码所对应的元素
2.递归 : 自己调用自己 就是递归,在python中递归最大的深度是997,官方给出的最大深度是1000
从python中显示d盘所有的文件名字
import os # 引入OS模块 def func(lujing,n): #定义路径 lst=os.listdir(lujing) #打开路径 for i in lst: #遍历路径,拿到文件夹 path=os.path.join(lujing,i) 找到d盘中的文件名 if os.path.isdir(path): #判断路径是否是文件夹 print(‘ ‘*n,i) #显示文件夹的名字 func(path,n+1) #递归 ,再来一次 (最重要) else: print(i) #如果不是文件夹,打印文件名字 func(d:/老男孩教学,0) #传参
递归的入口(参数) 和出口(return)比较重要
主要用途 : 树形结构的遍历
3 . 二分法 (二分法查找主要的作用是查找元素)
掐头去尾取中间 查找效率非常高
用递归去运用2分法 (这种方法是最推荐掌握的)(需要你明白和掌握) def func(n,lst,left,right): if left<=right: mid=(left+right)//2 if n >mid: left=mid+1 return func(n,lst,left,right) elif n<mid: rihgt=mid-1 return func(n,lst,left,right) else: print(‘找到数了‘) return mid else: print(‘没找到数‘) return -1 s=int(input(‘请输入你要查找的内容:‘)) lst = [1,3,5,7,12,36,68,79] # 数据集 百万级数据 ret=func(n,lst,left,right) print(ret)
二分法 # 不使用递归(需要你明白和掌握) lst = [1,3,5,7,12,36,68,79] s=int(input(‘请输入你要查找的内容:‘)) left=0 #左函数 right=len(lst)-1 #右函数 while left<=right: #判断如果左函数小于右函数 mid=(left+right)//2 #求中间值 if s>mid: # 如果输入的数大于中间值 left=mid+1 elif s<mid: # 如果输入的数小于中间值 right=mid-1 else: #输入的数等于中间值 print(‘找到数了‘) break #退出 else: # 如果左函数大于右函数 print(‘没找到数‘)
4. 补充 :最快速的查找方法(既节省内存,查找速度又快)
lst = [1,3,55,98,37,41,2,5,1,4] new_lis=[] #新建一个列表 for i in range(99): #找到列表中最大的数字,用for循环把所有的数字拿出来 new_lis.append(0) #在新列表中添加98个0 for el in lst: #循环之前的列表,把新列表中对应的数字变成1 new_is[el]=1 cont=int(input(‘请输入你要查找的内容:‘)) if new_lis[cont]==0: #如果你输入的数字在新列表中是0 ,没找到数 print(‘没找到数‘) elif new_lis[cont]==1: #如果输入的数字在新列表中是1,找到数了 print(‘找到数了‘)
以上是关于2018.12.13 今日所学的主要内容,如果未能解决你的问题,请参考以下文章