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' ...
随机推荐
- es6中export和export default的区别
export与export default均可用于导出常量.函数.文件.模块 你可以在其它文件或模块中通过import+(常量 | 函数 | 文件 | 模块)名的方式,将其导入,以便能够对其进行使用 ...
- PSFTP用法
PSFTP是PuTTY SFTP客户端,用于本地与服务器间安全传输文件(使用SSH连接). 1. 启动PSFTP 在Windows命令提示符中输入 set PATH=C:/PSFTP.exe所在路径; ...
- idea maven环境下 java实现发送邮件验证
1.开通smtp授权 QQ邮箱-设置-账户-开启 得到一个授权码 2.下载javax.email包 maven项目中 pom文件加入: <dependency> <groupId&g ...
- jmap -histo pid 输出的[C [B [I [S 的含义
JMAP 输出 其中: [C is a char[][S is a short[][I is a int[][B is a byte[][[I is a int[][]
- codeforces590a//Median Smoothing//Codeforces Round #327 (Div. 1)
题意:一个数组,一次操作为:除首尾不变,其它的=它与前后数字的中位数,这样对数组重复几次后数组会稳定不变.问要操作几次,及最后的稳定数组. 挺难的题,参考了别人的代码和思路.总的来说就是找01010, ...
- 自定义session的存储机制
<?php class MSession implements SessionHandlerInterface{ // reids 对象 protected $handler = null; / ...
- 惊世骇俗的sql语句之连表查询
select `product_skus`.id as skuId, `wname` as sku名称, if(`sku_attributes`.`status`=1,'上架','下架') as 状态 ...
- python-django中间件session源码
settings.py MIDDLEWARE = [ 'django.contrib.sessions.middleware.SessionMiddleware', ] 1. 看看SessionMid ...
- 别忘了Nologging哦
别忘了Nologging哦
- InnoDB存储引擎介绍-(2)redo和undo学习
01 – Undo LogUndo Log 是为了实现事务的原子性,在MySQL数据库InnoDB存储引擎中,还用Undo Log来实现多版本并发控制(简称:MVCC). - 事务的原子性(Atomi ...