一 内置函数
1. revserd 翻转,返回的是迭代器
# 将 s 倒置 s = \'不是上海自来水来自海上\' # 方法一 print(s[::-1]) # 方法二 s1 = reversed(s) i = \'\' for el in s1: i +=el print(i)
2.slice 切片
lis = [\'nishi\',\'woshi\',\'shuia\',\'benjim\'] s = slice(1,3) print(lis[s])
3.formate
# 格式化输出 s = \"我叫{name},我想去{adress},我喜欢{hobby}.\".format(name=\'zhangmeng\',adress=\'上海\',hobby=\'dance\') print(s) # 字符串 print(format(\'test\', \'<20\')) # 左对齐 print(format(\'test\', \'>20\')) # 右对齐 print(format(\'test\', \'^20\')) # 居中 # 数值 print(format(3, \'b\')) # 二进制 print(format(97, \'c\')) # 转换成unicode字符 print(format(11, \'d\')) # 十进制 print(format(11, \'o\')) # 八进制 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, \'0.2e\')) # 科学计数法. 保留2位小数(小写) print(format(123456789, \'0.2E\')) # 科学计数法. 保留2位小数(大写) print(format(1.23456789, \'f\')) # 小数点计数法. 保留6位小数 print(format(1.23456789, \'0.2f\')) # 小数点计数法. 保留2位小数 print(format(1.23456789, \'0.10f\')) # 小数点计数法. 保留10位小数 print(format(1.23456789e+10000, \'F\')) # 小数点计数法.
4. type() 返回类型 ord() 输入字符找字符编码的位置 chr() 输入位置找出对应的字符 ascii()判断给出的信息是否是ascii
for i in range(65536): print(chr(i), end=\"\")
二. 递归
函数自己调用自己,递归的入口(参数) 和 出口(return)
语法:
def func(): print(\'我是递归\') func() func() # 官方显示最多到1000.但不会跑到1000,实际到998
# 树形结构的遍历 import os def func(lujing, n): lis = os.listdir(lujing) # 打开文件夹,列出文件夹内的所有文件名 for el in lis: # el 为文件的名字 # 还原文件路径 path = os.path.join(lujing,el) if os.path.isdir(path):# 判断路径是否是文件夹 print(\'*\' * n,el) # 显示文件夹的名字 func(path, n+1) # 再来一次 else: print(\'/t\'*n,el) # 显示文件 func(\'f:/a\', 0)
import os def func(lujing, n): lis = os.listdir(lujing ) # 打开文件夹,列出文件夹内的所有文件名 for el in lis: # el为文件名 # 还原文件的路径 path = os.path.join(lujing, el) if os.path.isdir(path): # 判断路径是否是文件夹 print(\'*\'* n, el) # 显示文件夹名称 func(path, n+1) # 再来一次 else: with open(path,mode=\'wb\') as f: # 打开文件,都写入内容 f.write(b\'123456\') print(\'/t\'*n, el) # 显示文件 func(\'F:/a\',0)
三. 二分法
掐头结尾取中间,查找效率非常高,二分法查找的主要作用就是查找元素
# 二分法查找 lst = [1,4,6,7,9,21,23,45,67,87,65,43,89] n = int(input(\'请输入一个数:\')) lst = sorted(lst) # print(lst) 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(\'请输入你要查找的数:\')) lst = [1,4,6,7,9,21,23,45,67,87,65,43,89] func(n,lst)
# 递归2 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) else: print(\'找到了\') return mid # 难点 else: print(\'找不到\') return -1 n = int(input(\'请输入你要查找的数:\')) lst = [13,45,56,67,78,57,89,101] ret = func(n,lst,0,len(lst)-1) print(ret)
# 最快的查找方法 lst = [13,45,56,57,67,78,89,101] # 找出最大的数 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异常处理详解
下一篇 :
脑洞 | 废太子能否平安渡劫?若有AI襄助的话
-
从立创EDA,Gratipay看中文编程开发环境和推广运营的一个趋势
2026-05-19栏目: 教程
-
开发者必读 · 周报 | 001期
2026-05-19栏目: 教程
-
左手代码右手滑板 支付宝这个程序员有些酷
2026-05-19栏目: 教程
-
标记您的阿里云资源
2026-05-19栏目: 教程
-
无需开发,IT事件接入钉钉的方法详解
2026-05-19栏目: 教程
