# 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-递归,二分查找的更多相关文章

  1. Python递归 — — 二分查找、斐波那契数列、三级菜单

    一.二分查找 二分查找也称之为折半查找,二分查找要求线性表(存储结构)必须采用顺序存储结构,而且表中元素顺序排列. 二分查找: 1.首先,将表中间位置的元素与被查找元素比较,如果两者相等,查找结束,否 ...

  2. Python实现二分查找

    老生常谈的算法了. #!/usr/bin/python # -*- coding:utf-8 -*- # Filename: demo.py # 用python实现二分查找 def binarySea ...

  3. 巨蟒python全栈开发-第14天 内置函数2 递归 二分查找

    一.今日内容总览 1.内置函数补充 repr() 显示出字符串的官方表示形式 chr() arscii码中的字,转换成位置 ord() arscii码中的位置,转换成字2.递归 自己调用自己 两个口: ...

  4. Python 实现二分查找(递归版)

    二分查找 为什么使用二分查找: python中的列表,一般取值为遍历这个列表,直到取到你想要的值,但是如果你的列表是一个有着百万元素的列表呢,那样for循环遍历列表就会很慢,可能会循环几十万次,才能找 ...

  5. Python递归函数,二分查找算法

    目录 一.初始递归 二.递归示例讲解 二分查找算法 一.初始递归 递归函数:在一个函数里在调用这个函数本身. 递归的最大深度:998 正如你们刚刚看到的,递归函数如果不受到外力的阻止会一直执行下去.但 ...

  6. python实现二分查找算法

    二分查找算法也成为折半算法,对数搜索算法,一会中在有序数组中查找特定一个元素的搜索算法.搜索过程是从数组中间元素开始的 如果中间元素正好是要查找的元素,则搜索过程结束:如果查找的数大于中间数,则在数组 ...

  7. python关于二分查找

    楔子 如果有这样一个列表,让你从这个列表中找到66的位置,你要怎么做? l = [2,3,5,10,15,16,18,22,26,30,32,35,41,42,43,55,56,66,67,69,72 ...

  8. 数据结构和算法:Python实现二分查找(Binary_search)

    在一个列表当中我们可以进行线性查找也可以进行二分查找,即通过不同的方法找到我们想要的数字,线性查找即按照数字从列表里一个一个从左向右查找,找到之后程序停下.而二分查找的效率往往会比线性查找更高. 一. ...

  9. 【Python】二分查找算法

    二分查找:在一段数字内,找到中间值,判断要找的值和中间值大小的比较.如果中间值大一些,则在中间值的左侧区域继续按照上述方式查找.如果中间值小一些,则在中间值的右侧区域继续按照上述方式查找.直到找到我们 ...

  10. python实现二分查找与冒泡排序

    二分查找,代码如下: def binarySearch(l, t): low, high = 0, len(l) - 1 while low < high: 'print low, high' ...

随机推荐

  1. Codeforces 1079 E - The Unbearable Lightness of Weights

    E - The Unbearable Lightness of Weights 思路: 分组背包dp 每组最多只能选一个 一些优化可以快很多 代码: #pragma GCC optimize(2) # ...

  2. Codeforces 686 D - Kay and Snowflake

    D - Kay and Snowflake 思路: 树的重心 利用重心的一个推论,树的重心必定在子树重心的连线上. 然后利用重心的性质,可知,如果有一颗子树的大小超过整棵树的大小的1/2,那么树的重心 ...

  3. idataway_前端代码规范

    1.前后端json对接的规范. 前后端的json代码规范 result ={ success:”true”,//true表示成功,false表示失败. data:{}, //数据 errorCode: ...

  4. 拖图UI和纯代码UI

    1拖图UI, 优点:适合快速实验各种天马行空的想法 缺点:太多的storyBoard不好管理,不适合较大的项目,如果一个项目有价值,或成熟了,为了维护拓展,就最好改为纯代码 2纯代码UI 优点:1好维 ...

  5. 一次dropzone体验

    对于前端,本人不是太擅长,对于当前的一些网上的样例,也许是习武悟性太差,不是太透,所以只能通过blog的方式记录下一些武功套路,便于以后查询使用 首先,我们需要知道这个武功适应的战场. 什么是drop ...

  6. Java 发送SOAP请求调用WebService,解析SOAP报文

    https://blog.csdn.net/Peng_Hong_fu/article/details/80113196 记录测试代码 SoapUI调用路径 http://localhost:8082/ ...

  7. validateRequest 相关的作用

    在 Web 应用程序中,要阻止依赖于恶意输入字符串的黑客攻击,约束和验证用户输入是必不可少的.跨站点脚本攻击就是此类攻击的一个示例.其他类型的恶意数据或不需 要的数据可以通过各种形式的输入在请求中传入 ...

  8. 决策论 | 信息论 | decision theory | information theory

    参考: 模式识别与机器学习(一):概率论.决策论.信息论 Decision Theory - Principles and Approaches 英文图书 What are the best begi ...

  9. 如何跳过开机密码进入windows系统

    工具:安装好PE系统的u盘一个. 开机时按F12(每个电脑不同)进入PE系统,将c盘目录下的SAM文件拷入自己的u盘内.SAM文件的位置:  C:\WINDOWS\system32\config\SA ...

  10. 记一次RAID阵列的迁移经历

    xu言: 最近,某电信机房因为空调漏水问题导致了我司的Dell R430 服务器的主板及CPU不同程度受损.服务器已经不能正常开机.但是,又基于把服务器的数据需要最短时间进行恢复.抱着试试看的心里进行 ...