1.部分内置函数

 repr()显示出字符串的官方表示形式,返回一个对象的string形式

# repr 就是原封不动的输出, 引号和转义字符都不起作用
print(repr('大家好,\n \t我叫周杰伦'))
print('大家好我叫周杰伦')
# %r 原封不动的写出来
name = 'taibai'
print('我叫%r' % name) 前面用r来原封不动的写出来
print(r'我叫\n\t,,,') # 我叫\n\t,,,

 

chr() 输入位置数字找出对应的字符

# 找到对应编码位置的字符
print(chr(97)) # a
print(chr(20013)) # 中

 

ascii() 是ascii码就返回该值,不是就返回/u

# 在ascii中就返回这个值. 如果不不在就返回\u...
print(ascii('a')) # 'a'
print(ascii('好')) # '\u597d' 

 

ord() 输入字符找带字符编码的位置

# 找到对应字符的编码位置
print(ord('a')) # 97
print(ord('中')) # 20013

 

2.递归

  在函数中调用函数本身.就是递归

def func():
print("我是谁")
func()
func()

  在python中递归的深度最大到998,

官方给的深度是1000,我在pycharm中测试是998,mac环境下997

在python中递归的深度最大到998
def foo(n):
print(n)
n += 1
foo(n)
foo(1) # 998结束

 

遍历显示文件夹中所有文件

方式1.使用递归来遍历文件夹中所有文件

import os

def func(lujing,n):  # "d:\a\"  定义这个函数 参数为路径,n用来显示子文件夹更清晰
lst = os.listdir(lujing) # 获取路径下的文件夹列表
for el in lst: # 遍历这个列表,这里获取的只是本层文件名 b, c
path = os.path.join(lujing,el) # 加入文件夹 获取到文件夹 +文件
if os.path.isdir(path): # "d:/a/b" 如果该路径下的文件是文件夹类型
print('\t'*n,el)
func(path,n+1) # 继续相同的操作,这里使用递归
else:
print('\t'*n,el)
func('D:\a',0)

方式2.

import os

for path,dirss,files in os.walk('c:\users\'):
for file in files:
print(os.path.join(path,file))

3.二分查找

  二分查找,每次能够排除掉一半的数据,查找的效率非常高,但是局限性比较大,必须是有序序列才可以使用二分查找

要求:查找的序列必须是有序序列

使用while循环的二分法

lst = [1,3,5,7,12,36,68,79] # 数据集 百万级数据
num = int(input("请输入你要查找的元素信息:")) left = 0
right = len(lst)-1 while left<=right:
mid = (left + right) // 2
if num>lst[mid]:
left = mid +1
elif num<lst[mid]:
right = mid - 1
else:
print('存在')
print(mid)
break
else:
print('不存在')

 

使用递归的二分法

lst = [1,3,5,7,12,36,68,79] # 数据集 百万级数据
num = int(input("请输入你要查找的元素信息:")) def func(num,left,right):
if left < right:
mid = (left+right)//2
if num >lst[mid]:
left = mid+1
elif num < lst[mid]:
right=mid-1
else:
print('存在')
return mid
return func(num,left,right) # 这个return必须要加否则永远返回none
else:
print('找不到')
return -1 # 这里用返回-1
a = func(num,0,len(lst)-1)
print(a)

  

用递归和列表切片的二分法

lst = [1,3,5,7,12,36,68,79] # 数据集 百万级数据
num = int(input("请输入你要查找的元素信息:")) def func(num,lst):
left = 0
right = len(lst)-1
if lst != []:
mid = (left+right)//2
if num > lst[mid]:
func(num,lst[mid+1:])
elif num < lst[mid]:
func(num,lst[:mid])
else:
print('找到了')
return
else:
print('没找到')
return
func(num,lst)

  

一种极为快速的查找方式,我在小学生编程书上看到过的

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:
new_lst[i] = 1 i = int(input('请输入你要找的数据'))
if new_lst[i] == 0:
print('不存在')
else:
print('存在')

  

  

python中的内置函数,递归,递归文件显示(二),二分法的更多相关文章

  1. python中的内置函数(2)

    一.lambda匿名函数定义:为了解决一些简单的需求而设计的一句话函数例子:计算n的n次方 def func(n):#正常的写法 return n**2 f=lambda n:n**2 这里的lamb ...

  2. python中的内置函数(一), lambda, filter, map

    https://www.processon.com/view/link/5c10da0ce4b099ae3e137bf6 1.内置函数 内置函数就是python中提供的,可以直接拿来用的函数,比如pr ...

  3. python中一些内置函数实例

    lambda表达式 简单函数可用lambda表达式 1. def f1() return(123) r1=f1() print() 2. f2=lambda:123 r2=f2() print() 以 ...

  4. python中的内置函数(一)

    内置函数:内置函数就是python提供的,可以拿来直接用的函数 作用域相关 locals():返回当前作用域中的名字globals():返回全局作用域中的内容 def func(): print('我 ...

  5. 2018.8.14 python中的内置函数(68个)

    主要内容: python中68个内置函数的功能及使用方法

  6. python学习之【第十篇】:Python中的内置函数

    1.前言 内置函数,就是Python内部预先定义好的函数,可以直接使用,Python中内置函数有以下这么多个: 2.map() 描述: map() 会根据提供的函数对指定序列做映射.第一个参数 fun ...

  7. Python中max()内置函数使用(list)

    在学习完列表和元组的基础知识后,做到一个题: 求出列表中频次出现最多的元素. 学习到了python内置函数max的用法 其参数key的用法 匿名函数lamda的用法 python内置函数max() m ...

  8. python中常用内置函数和关键词

    Python 常用内置函数如下: Python 解释器内置了很多函数和类型,您可以在任何时候使用它们.以下按字母表顺序列出它们. 1. abs()函数 返回数字的绝对值. print( abs(-45 ...

  9. Python中的内置函数__init__()的理解

    有点意思,本来我是学习java的.总所周知,java也有构造函数,而python在面向对象的概念中,也有构造函数.它就是 __init__(self) 方法. 其实类似于__init__()这种方法, ...

随机推荐

  1. Ubuntu安装Chrome过程中的细节

    Ubuntu中的默认浏览器是Firefox,但是一直以来都认为Chrome更加优秀.下面记录一下在Ubuntu下安装Chrome的过程,也回顾一下Ubuntu系统中的一些细节. 大多数Linux安装软 ...

  2. controller 允许跨域访问

    1.在controller 上加上 @CrossOrigin(origins = {"http://localhost:7777", "http://someserver ...

  3. centos7上mysql无法启动也没有日志

    报错的原因就是 [root@localhost duanxinli]# journalctl -xe-- Subject: Unit mysqld.service has begun start-up ...

  4. tomcat与jboss 01

    1. Tomcat是Apache鼎力支持的Java Web应用服务器(注:servlet容器),由于它优秀的稳定性以及丰富的文档资料,广泛的使用人群,从而在开源领域受到最广泛的青睐. 2. Jboss ...

  5. 解决MongoDB分页查询之count查询慢的问题

    一.概述 问题描述:在项目中优化动态查询分页接口时,发现count查询很慢(数据量大概30万),那如何解决这个问题呢? 解决方法:添加索引,多个查询条件可以添加复合索引 二.测试对比 1. 未加索引时 ...

  6. Binary Watch二进制时间

    [抄题]: A binary watch has 4 LEDs on the top which represent the hours (0-11), and the 6 LEDs on the b ...

  7. TOGAF架构培训材料学习总结

        作于一个架构师尤其是企业架构师来说,丰富的理论知识可以帮助他在架构规划及管理过程中站在更高的角度去看待问题,历史发展原因有很多已成体系的架构理论,TOGAF是近年来比较接地气的,受到了政府和银 ...

  8. mongodb3 设置用户名密码 ,linux

    --29T09:: I CONTROL [initandlisten] ** WARNING: You are running on a NUMA machine. --29T09:: I CONTR ...

  9. C# Http请求接口数据的两种方式Get and Post

    面向接口编程是一种设计思想,无论用什么语言都少不了面向接口开发思想,在软件开发过程中,常常要调用接口,接下来就是介绍C#调用其它开发商提供的接口进行获取数据,http接口方式获取接口数据. Get请求 ...

  10. 转载VC6.0 子窗口和父窗口

    这个是我周一在一家公司做的上机题中的一道,当场没做出来.我当时只跟考官说了设计思路,是带回来查了几本资料书之后才完成的.因为有半个学期没用VC开发了……,最近一直都在实践ASP.NET相关的…… 建立 ...