# 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. Vuex结合 async/await 优雅的管理接口请求

    先看看 async/await 的语法 async 函数返回一个 Promise 对象 async 函数内部 return 返回的值.会成为 then 方法回调函数的参数. 1 2 3 4 async ...

  2. DAY3 数据类型与运算符

    一.注释 代码注释分单行和多行注释, 单行注释用#,多行注释可以用三对双引号""" """ 注释用于解释某一行代码的作用,增加代码的可读性 ...

  3. (转)C# Textbox的ImeMode取值对中文输入法的影响

    取值 五笔加加 微软拼音3.0 搜狗拼音 说明 NoControl 首次调出后按一次ctrl+space才能正确使用 中西标点或全半角字符继承上次设置 调出后默认为英文输入状态  调出后默认为西文标点 ...

  4. idea javamaven项目 连接sqlserver 数据库方法

    这里用的是c3p0连接数据库 1.pom文件写法: <!-- 数据库连接池 --> <dependency> <groupId>com.mchange</gr ...

  5. 在远程连接一个 Wndows 10的情况下,重启远程机器

    如果你从菜单找的话,是找不到这个菜单的!!! 你应该直接按 alt + F4 , 就会出现这个选项了. 参考: https://tommynation.com/shut-windows-10-remo ...

  6. Polygenic score

    We estimate the maximum prediction accuracy for the risk of Alzheimer's disease based on disease pre ...

  7. BGP-6,解决IBGP的水平分割

  8. IntelliJ IDEA 安装 Scala 插件

    本页面中对在 IntelliJ 中安装 Scala 插件的步骤和方法进行了描述. 需要在 IntelliJ  安装 Scala 插件,你首先需要在你的计算机中安装 IntelliJ .IntelliJ ...

  9. Django的form组件

    forms组件 forms组件,是一个类.在视图函数中创建一个类,类需要继承forms.Form from django import  forms 1.校验数据 步骤和语法: 1. 创建一个form ...

  10. 查看cookie的快捷方法

    1.url中输入数字+javascript:alert(document.cookie)   如:2javascript:alert(document.cookie)   ,然后在浏览器中去掉2,回车 ...