python-递归,二分查找
- # print(list("胡辣汤"))
- # lst = ["河南话", "四川话", "东北", "山东", "上海"]
- #
- # r = reversed(lst)
- # print(list(r))
- # huiwen = "不是上海自来水来自海上"
- # s = huiwen[::-1]
- # it = reversed(huiwen) # 返回的是迭代器
- # s = ""
- # for el in it:
- # s += el
- # print(s)
- # lst = ["河南话", "四川话", "东北", "山东", "上海"]
- # s = slice(3,5) # 切片. 麻烦
- # print(lst[s])
- # s = "我叫{name}, 我来自{home}, 我喜欢干{hobby}".format(name="周杰伦", home="台湾", hobby="唱歌")
- # print(s)
- #
- # name = "周杰伦"
- # home="台湾"
- # hobby="唱歌"
- #
- # print(f"我叫{name}, 我来自{home}, 我喜欢干{hobby}")
- # s = "门神"
- # s1 = s.center(20)
- # print(s1)
- #
- # print(format("门神", "^20"))
- # print(format("门神", "<20"))
- # print(format("门神", ">20"))
- # print(format(3, 'b')) # ⼆二进制 binary 0b11
- # print(format(65, 'c')) # 转换成unicode字符 ascii
- # print(format(11, 'd')) # ⼗十进制
- # print(format(11, 'o')) # ⼋八进制 0o 13
- # print(format(11, 'x')) # ⼗六进制(⼩写字⺟)
- # print(format(11, 'X')) # ⼗六进制(⼤写字⺟)
- # print(format(11, 'n')) # 和d⼀样
- # print(format(11)) # 和d⼀样
- # print(format(123456789, 'e')) # 科学计数法. 默认保留6位小数 表示大的数据
- # print(format(123456789, '.2e')) # 科学计数法. 保留2位小数(⼩写)
- # print(format(123456789, '0.2E')) # 科学计数法. 保留2位⼩数(⼤写)
- # 浮点计数法
- # print(format(1.23456789, 'f')) # 浮点数计数法. 保留6位⼩数
- # print(format(1.23456789, '0.2f')) # ⼩浮点数计数法. 保留2位⼩数
- # print(format(1, '0.10f')) # ⼩浮点数计数法. 保留10位⼩数
- # print(format(1.23456789e+10000, 'F')) # ⼩浮点数计数法.
- # a = 0b11 # 数字3
- # print(type(a))
- # print(a)
- # print(ord("中")) # 20013
- # print(chr(20014))
- # for i in range(65536):
- # print(chr(i), end= " ")
- # print(ascii("a")) # 判断出你给的信息是否是ascii
- # 转义字符\n 换行\t tab 制表符\r 回车\" 双引号\' 单引号\\ \
print('你好, 我叫周杰伦.我来自\\n台湾. 我老婆叫昆凌')- repr() # 还原字符串最官方的效果str:python的字符串repr: 所有的字符串print(repr("你好. \\n我叫\周杰伦")) # python -> repr() -> cpython c里面. 报错
- # print(r"\n\t范德萨发生\r\b\ffdsaf") # 原封不动的显示字符串
- # 函数自己调用自己
- # def func():
- # print("我是递归")
- # func()
- #
- # func() # 官方最大1000,你永远跑不到1000, 我实测998
- # while 1:
- # print("我不是递归")
- # 树形结构的遍历
- # import os
- #
- # def func(lujing, n): # "d:/a/"
- # lst = os.listdir(lujing) # 打开文件夹. 列出该文件夹内的所有文件名
- # for el in lst: # el是文件的名字. b, c
- # # 还原文件路径
- # path = os.path.join(lujing, el) # "d:/a/b"
- # if os.path.isdir(path): # 判断路径是否是文件夹
- # print("..." * n,el) # 显示文件夹的名字
- # func(path, n + 1) # 在来一次 ################
- # else:
- # print("\t" * n,el) # 显示文件
- #
- # func("d:/a", 0)
- # def func(lujing, n): # d:/a/b
- # lst = os.listdir(lujing)
- # for el in lst: # b, c
- # # 路径
- # path = os.path.join(lujing, el) # 拼接路径 d:/a/b
- # # 判断是文件还是文件夹
- # if os.path.isdir(path):
- # print("\t" * n, el)
- # func(path, n+1)
- # else:
- # f = open(path, mode="wb")
- # f.write(b'1')
- # print("\t" * n, el)
- #
- #
- # func("d:/a/", 0)
- # 二分法查找主要的作用就是查找元素
- # lst = [1,3,5,7,12,36,68,79] # 数据集 百万级数据
- # num = int(input("请输入你要查找的元素信息:"))
- #
- # for el in lst:
- # if num == el:
- # print("存在")
- # break
- # else:
- # print("不存在")
- # len(lst)
- # 0 1 2 3 4 5 6 7
- # [1,3,5,7,12,36,68,79]
- # n = 28 # 3
- # 规则. 掐头结尾取中间, 必须是有序序列,
- #
- # 二分法查找 (需要你明白和掌握)
- # lst = [1,3,5,7,12,36,68,79]
- # n = int(input("请输入一个数"))
- #
- # left = 0
- # right = len(lst) - 1
- #
- # while left <= right:
- # mid = (left + right)//2
- # if n > lst[mid]:
- # left = mid + 1
- # elif n < lst[mid]:
- # right = mid - 1
- # else:
- # print("存在")
- # break
- #
- # else:
- # print("不存在")
- # 递归
- # def func(n, lst):
- #
- # left = 0
- # right = len(lst) - 1
- # if lst != []:
- # mid = (left + right)//2
- # if n > lst[mid]:
- # func(n, lst[mid+1:]) # 改变列表
- # elif n < lst[mid]:
- # func(n, lst[:mid])
- # else:
- # print("找到了")
- # return
- # else:
- # print("没找到")
- # return
- #
- # n = int(input("请输入你要查找的数:"))
- # func(n, [1,3,5,7,12,36,68,79]) # 78
递归
- # 递归二 (需要你明白和掌握)
- # def func(n, lst, left, right): # 递归找到什么是可以变的. 什么是不可以变的
- # if left <= right:
- # mid = (left + right) // 2
- # if n > lst[mid]:
- # left = mid + 1
- # return func(n, lst, left, right)
- # elif n < lst[mid]:
- # right = mid - 1
- # return func(n, lst, left, right) # 递归如果有返回值. 所有调用递归的地方必须写return
- # else:
- # print("找到了")
- # return mid # 难点
- # else:
- # print("找不到")
- # return -1
- #
- # n = int(input("请输入你要查找的数:"))
- # lst = [1,3,55,98,37,41,2,5,1,4]
- # ret = func(n, lst, 0, len(lst)-1) # 78
- # print(ret)
递归2
- # 最快的查询
1 lst = [1,3,55,98,37,41,2,5,1,4]- new_lst = []
- for i in range(99):
- new_lst.append(0)
- for i in lst: # 1,3,55,98
- new_lst[i] = 1
- print(new_lst)
- i = int(input('请输入你要找的数据'))
- if new_lst[i] == 0: # 1次
- print("不存在")
- else:
- print("存在")
python-递归,二分查找的更多相关文章
- Python递归 — — 二分查找、斐波那契数列、三级菜单
一.二分查找 二分查找也称之为折半查找,二分查找要求线性表(存储结构)必须采用顺序存储结构,而且表中元素顺序排列. 二分查找: 1.首先,将表中间位置的元素与被查找元素比较,如果两者相等,查找结束,否 ...
- Python实现二分查找
老生常谈的算法了. #!/usr/bin/python # -*- coding:utf-8 -*- # Filename: demo.py # 用python实现二分查找 def binarySea ...
- 巨蟒python全栈开发-第14天 内置函数2 递归 二分查找
一.今日内容总览 1.内置函数补充 repr() 显示出字符串的官方表示形式 chr() arscii码中的字,转换成位置 ord() arscii码中的位置,转换成字2.递归 自己调用自己 两个口: ...
- Python 实现二分查找(递归版)
二分查找 为什么使用二分查找: python中的列表,一般取值为遍历这个列表,直到取到你想要的值,但是如果你的列表是一个有着百万元素的列表呢,那样for循环遍历列表就会很慢,可能会循环几十万次,才能找 ...
- Python递归函数,二分查找算法
目录 一.初始递归 二.递归示例讲解 二分查找算法 一.初始递归 递归函数:在一个函数里在调用这个函数本身. 递归的最大深度:998 正如你们刚刚看到的,递归函数如果不受到外力的阻止会一直执行下去.但 ...
- python实现二分查找算法
二分查找算法也成为折半算法,对数搜索算法,一会中在有序数组中查找特定一个元素的搜索算法.搜索过程是从数组中间元素开始的 如果中间元素正好是要查找的元素,则搜索过程结束:如果查找的数大于中间数,则在数组 ...
- python关于二分查找
楔子 如果有这样一个列表,让你从这个列表中找到66的位置,你要怎么做? l = [2,3,5,10,15,16,18,22,26,30,32,35,41,42,43,55,56,66,67,69,72 ...
- 数据结构和算法:Python实现二分查找(Binary_search)
在一个列表当中我们可以进行线性查找也可以进行二分查找,即通过不同的方法找到我们想要的数字,线性查找即按照数字从列表里一个一个从左向右查找,找到之后程序停下.而二分查找的效率往往会比线性查找更高. 一. ...
- 【Python】二分查找算法
二分查找:在一段数字内,找到中间值,判断要找的值和中间值大小的比较.如果中间值大一些,则在中间值的左侧区域继续按照上述方式查找.如果中间值小一些,则在中间值的右侧区域继续按照上述方式查找.直到找到我们 ...
- python实现二分查找与冒泡排序
二分查找,代码如下: def binarySearch(l, t): low, high = 0, len(l) - 1 while low < high: 'print low, high' ...
随机推荐
- 力扣(LeetCode)412. Fizz Buzz
写一个程序,输出从 1 到 n 数字的字符串表示. 如果 n 是3的倍数,输出"Fizz": 如果 n 是5的倍数,输出"Buzz": 3.如果 n 同时是3和 ...
- 数据库 Mysql 使用,优化,索引
数据库事务的隔离级别,由低到高 : READ UNCOMMITTED(读未提交数据):允许事务读取未被其他事务提交的变更数据,会出现脏读.不可重复读和幻读问题. READ COMMITTED(读已提交 ...
- maven项目依赖jar包报 java.lang.classnotfoundexception:Type com.xx.xx.xxx not present 的解决
今天在工作的时候遇到了这样一个奇葩的异常: java.lang.classnotfoundexception:Type com.ys.yahu.vo.file.MobileFileVo not pre ...
- ECharts图表的小工具
本文介绍一个echarts工具类EChart.js,用来制作统计图表,基于echarts3. 一.工具类特性如下: 包含柱状图.折线图和饼图,可以实现这三类统计图之间的切换: 支持标题和副标题: 支持 ...
- 并发之ThreadLocal
ThreadLocal ThreadLocal 用一种存储变量与线程绑定的方式,在每个线程中用自己的 ThreadLocalMap 安全隔离变量,为解决多线程程序的并发问题提供了一种新的思路. 简 ...
- spring ----> ResourceBundle [message] not found for MessageSource: Can't find bundle for base name message, local_zh
环境: idea 2018.1.3社区版,jdk8,spring4.2.0,maven3.5.2 主题: spring国际化 出现的问题: ResourceBundle [message] not f ...
- 使用validateXxx()方法进行输入校验 --Struts2框架
1.本例是在使用validate()方法进行输入校验 --Struts2框架的基础上接着做的,上一篇使用validate()方法进行输入校验时会对当前Action中的所有方法有效,由于Struts2框 ...
- hadoop 企业应用案例--大众点评
hadoop 企业应用案例--大众点评 http://f.dataguru.cn/thread-260531-1-1.html
- php匹配页面中的所有路径
方法一 $url='http://www.google.cn/search?q=php'; $html=file_get_contents($url); $dom = new DOMDocument( ...
- CentOS7 安装redis4:
phpredis-4.0.12.tar.gz:下载:wget http://download.redis.io/releases/redis-4.0.12.tar.gz $ tar -zxvf ...