系列文章目录
- Python知识
1.1 常用操作
1.2 常用的Python内置模块 - 算法部分
- 例题
本节目录
前言
最近在准备蓝桥杯,我整理了一些在蓝桥杯中使用的Python基础库和一些比赛常用的技巧。
一、Python知识
1.1 常用操作
1.1.1 Python接收数据
# 1、接收一个元素
s = input() # 字符串
n = int(input()) # 整数
# 2、接收两个或三个元素(以空格隔开)
n, m = map(int, input().split())
n, m, k = map(int, input().split())
# 3、将一行元素放入数组中
num = [int(i) for i in input().split()]
# 4、将数组变为整个字符串
s = "".join(map(str, num))
1.1.2 python内置方法
1.1.2.1 进制转换
hex() 将数字转换为十六进制字符串
oct() 将整数转换成八进制字符串
oct(int("39",16)) >>>'0o71' 十六进制转八进制
chr(number) 返回数字对应的ascii码值
divmod(a,b) 返回(a//b,a%b)
ord() 返回字符的ASCII编码
round(0.55555555,3) 四舍五入
pow()
1.1.2.2 字符串操作
字符串基本知识:原文链接
内容包含下列
1 字符串查询(index,find)
2. 字符串大小写转换操作(upper、lower、swapcase、capitalize和title)
3. 字符串对齐(center,just和zfill)
4. 分割字符串(split、splitlines和partition)
5. 合并与替换(join,replace)
6. 判断字符串(isidentifier、isspace、isalpha、isdecimal、isnumeric和isalnum等)
7. 字符串的比较(<,>,max,min等)
8. 去除两端多余字符操作(strip)
9. 判断开头结尾字符串(startswith,endswith)
10. 字符串计数(count,len)
11. 字符串的编码与解码(encode,decode)
补充:
# 使用find()方法查找子串
str6 = "Hello, world!"
print(str6.find("world")) # 输出7 (从0开始)
print(str6.find("python")) # 输出-1
# 使用in运算符查找子串
print("world" in str6) # 输出True
print("python" in str6) # 输出False
s36 = 'Hello123'
s37 = s36.isalnum() # 判断是否全是字母和数字
s38 = s36.isalpha() # 判断是否全是字母
s39 = s36.isdigit() # 判断是否全是数字
s40 = s36.islower() # 判断是否全是小写
s41 = s36.isupper() # 判断是否全是大写
s42 = s36.isspace() # 判断是否全是空白
print(s37) # 输出 True
print(s38) # 输出 False
print(s39) # 输出 False
print(s40) # 输出 False
print(s41) # 输出 False
print(s42) # 输出 False
1.1.2.3 copy 中的deepcopy
copy() 和 deepcopy() 的区别在于对于复合对象的拷贝,copy() 只会复制对象的表面,而 deepcopy() 会复制对象的本质。因此,当我们需要完全独立的对象副本时,应该使用 deepcopy()
,而不是 copy()。
import copy
a = [1, 2, [3, 4]] # a 是一个复合对象,包含了一个列表的引用
b = copy.copy(a) # b 是 a 的浅拷贝,只拷贝了 a 的第一层
c = copy.deepcopy(a) # c 是 a 的深拷贝,拷贝了 a 的所有层次
a[2][0] = 5 # 修改 a 中的列表元素
print(a) # 输出 [1, 2, [5, 4]]
print(b) # 输出 [1, 2, [5, 4]],因为 b 中的列表引用和 a 中的相同,所以受到影响
print(c) # 输出 [1, 2, [3, 4]],因为 c 中的列表引用和 a 中的不同,所以不受影响
1.1.2.4 functools.lru_cache 递归算法加速
functools.lru_cache 是一个非常有用的装饰器,它可以为深度优先搜索(DFS)等递归函数提供记忆化功能,即将函数在不同参数下的运行结果缓存起来,以便下次以相同的参数调用时直接返回缓存的结果,从而节省计算时间和空间。
import functools
@functools.lru_cache(maxsize=None) # 使用 functools.lru_cache 装饰器,设置缓存容量为无限大
def fib(n):
# 定义一个求斐波那契数列的函数
if n < 2:
return n
return fib(n-1) + fib(n-2)
print(fib(10)) # 输出 55,没有缓存,需要递归计算
print(fib(10)) # 输出 55,有缓存,直接返回结果