目录
参加蓝桥杯时整理的一些常用的库和函数
一、输入数据
a = input() # 输入一个数据,返回值为字符串类型
a = int(input()) # 输入一个数据,返回值被转换成整数类型
a = list(map(int, input().split())) # 一行输入多个元素,传给一个变量
# input()返回值为一个字符串,split()将字符串分开,map将每一个字符转换为int型,整个式子最终返回值为一个列表
a = [int(i) for i in input().split()] # 上式的另一种写法
a = ‘’.join(map(str, a) # 将列表/数组转为字符串
# join()函数只能对字符类型操作,所以需先用map()将列表中每个元素转为字符类型,即
# ' '.join(list(map(str,a)))
a, b, c = map(int, input().split()) # 一行输入多个元素,传给不同变量
二、内置函数
int(x, 2) # 将x由二进制转为十进制,其它进制转十进制类似
bin(x) # 其它进制转二进制
oct(x) # 其它进制转八进制
hex(x) # 其它进制转十六进制
round(number, digits) # 对数字number四舍五入保留digits位小数,四舍,五不进,六入
abs(x) # 取绝对值
chr(x) # 将整数转换成该编码对应的字符
ord(x) # 将字符转换成对应的编码整数
enumerate() # 迭代器,返回index和value,可用于循环遍历或查找
set(x) # 将x转化为集合,即去重
len(s) # 求长度
三、字符串方法
s.swapcase() # 将字符串中所有字母的大小写都反转
s.upper() # 将字符串所有的字母都转换为大写
s.lower() # 将字符串所有的字母都转换为小写
s.join(iterable) # 返回被子字符串iterable连接的子字符串
s.split("") # 按照指定字符将字符串拆分成序列
s.strip() # 将字符串开头和末尾的空白删除,返回删除后的结果
s.find(str, beg = 0, end = len(string)) # 查找子串str,从beg开始检索,到end结束
s.replace(old, new, count) # 将old替换成new,count为替换的字符数,返回新的字符串
# 以下不常用
s.isdigit() # 检查字符串中的字符是否都是数字
s.isnumeric() # 检查字符串中的所有字符是否都是数字字符
s.capitalize() # 返回字符串的副本,但将第一个字符大写
s.isalpha() # 检查字符串中的所有字符是否都是字母
s.isalnum() # 检查字符串中的字符是否都是字母或数
s.isspace() # 检查字符串中的字符是否都是空白字符
四、列表、字典、集合
a.append(obj) # 在列表后面添加元素obj
a.pop(index) # 删除索引元素,如无索引,则删除列表末尾元素
a.remove(obj) # 删除元素,如果有重复,只删除第一个,如果元素不存在会报错
a.count(obj) # 返回某个元素在列表里面的个数
a.extend(b) # 在列表a后面添加列表b
a.index(obj) # 返回元素在列表中的第一个位置
a.insert(index, obj) # 将指定对象插入列表的指定位置,index是对象obj需要插入的索引位置
a.sort() # 由小到大排序
a.reverse() # 将列表进行翻转
a.clear() # 清除列表元素
a = [i ** 2 for i in range(10)] # 生成一个一维数组 [0, 1, 4, 9..., 100]
a = [[0] * K for i in range(N)] # 生成一个N行K列的二维数组
a.keys() # 返回字典的所有键组成的一个视图对象(不是列表)
a.values() # 返回字典的所有值组成的一个视图对象(不是列表)
a.items() # 返回字典的所有键和值组成的元组组成的一个视图对象(不是列表)
a[value] # 访问key的value值
a.get(key) # 访问value的key值
a.pop(key) # 删除该键值对,并返回该key的value值
a.popitem() # 移出字典中最后的键值对并返回该键值对组成的一个元组
# sort(key = None,reverse = False)只能对list操作,且在原列表上排序
# sorted(iterable, key = None, reverse = False)可以对所有的可迭代对象进行排序操作,并且不改变原列表,产生一个新列表
sorted(a, key = lambda x:x[0], reverse = True) # 结合使用
a.add(x) # 添加一个元素
a.update(list) # 添加多个元素
a.remove(x) # 删除元素
set1 & set2 # 求交集
set1 | set2 # 求并集
set2 - set1 # 求差集
五、队列
1.普通队列queue
from queue import * # 导入
q = Queue() # 创建
q.put() # 从队尾插入
q.get() # 从队头删除,并返回
q.qsize() # 返回队列长度
q.empty() # 判断队列是否为空
2.双端队列deque
from collections import deque # 导入
q = deque() # 创建
q.append() # 入队,从队尾插入
q.appendleft() # 入队,从队头插入
q.pop() # 出队,从队尾删除,并返回该值
q.popleft() # 出队,从队头删除,并返回该值
len(q) # 返回队列长度
if q # 判断队列是否为空
六、datetime模块
import datetime # 导入模块
from datetime import datetime, timedelta # 导入模块
a = datetime.date(2023, 4, 5) # 输入一个日期
a = datetime(2023, 4, 5) # 输入一个日期
b = datetime.timedelta(days = 1) # 输入时间间隔,还可以用weeks/hours,默认为 1 day
c = a + b # c : 2023-4-6
a.weekday() # 返回星期数,从0开始
a.isoweekday() # 返回星期数,从1开始
a.toordinal() # 返回公元公历从开始到现在的天数
a.datetime.date.today() # 返回今天日期
a.__format__('%Y/%m/%d') # 按指定格式输出日期,该式返回值:2023/4/5
七、itertools模块
from itertools import * # 导入
permutations(iterable, n) # 连续返回由iterable元素生成的长度为n的排列情况
combinations(iterable, n) # 连续返回由iterable元素生成的长度为n的组合情况
八、math模块
import math # 导入
math.pi # 圆周率
math.e # 自然对数
math.pow(x, y) # 返回x的y次幂
math.exp(x) # 返回e的x次幂
math.sqrt(x) # 对x开方
math.gcd(x, y) # 返回x和y的最大公约数
九、格式化输出
'{}'.format(a) # 一般形式
# 1.通过关键字格式化
print('{name} is {age} years old.'.format(name = 'xiaoming', age = 10))
# 输出:xiaoming is 10 years old.
# 2.通过关键字格式化
print('{0} is {1} years old.'.format('xiaohong', '10'))
# 输出:xiaohong is 10 years old.
# 注意占位符要在引号内,引号外直接跟 %变量
>>> print('%o' % 20) # %o:八进制
24
>>> print('%d' % 20) # %d:十进制
20
>>> print('%x' % 20) # %x:十六进制
14
>>> print('%#x' % 20) # 加"#"保留前缀
14
# "-"表示左对齐
# %2.3f 表示宽度为2,保留小数点后三位
# %s 可以将任何数据转换为字符串