蓝桥杯必备模块及常用操作(python)

蓝桥杯必会模块(python):

  • 字符类型模块
  • 日期函数模块(常用)
  • 优先级队列
  • itertools模块
  • collections模块
  • Bisect模块
  • List()集合
  • set()集合
  • Math模块

    字符类型模块

    先看点常用但比较琐碎的

    ⭐基本操作演示:

    str(i).count("2") #count统计字符2的个数
    s=input() #input() 返回的是字符串类型
    s[0] #第一个元素
    s[-1] #最后一个元素
    ss=s+str(123) #+号是拼接 两个字符串类型
    "".join(list) #把列表,队列等输出时,以字符串的形式输出
    

    ⭐切片使用:[起点 :终点 :步长]

    n=x[-n:]+x[:m-n] #后m个数提到字符串前面
    

    ⭐进制转换函数:

    十进制转二进制 bin函数():注意的是出来的是字符串,且有前缀’0b’,注意去除

    十进制转十六进制 hex函数()):注意的是出来的是字符串,且有前缀’0x’,注意去除

    十进制转八进制 oct函数()):注意的是出来的是字符串,且有前缀’0o’,注意去除

    ⭐字符串有关函数:

    'aAWDdwd'.lower()
    'DAWDAWa'.upper()
     s="12A"
     s[1].isalpha()#判断某个字符是否为字母 isalpha()函数:
     s[1].isdigit()#判断某个字符是否为数字 isdigit()函数:
     s.rfind() #查找字符最后一次出现的位置,没有则返回-1
     #ord:把字符转化为对应的Ascii(ord('A')=65)
     #chr:把Ascii转化为对应的字符
    

    ⭐格式化输出数字:

    "{:.0f}%".format() #四舍五入保留一位小数
    

    ⭐enumerate函数:遍历下标和值,可以利用enumerate创建字典后,根据元素找下标

    a = sorted(set(arr))
    d = {}
    for i, v in enumerate(a, 1):
        d[v] = i
    

    日期函数模块(常用)

    ⭐三个最常用的类:

    1. datetime.date:表示日期的类,主要用于处理年、月、日;
    2. datetime.datetime:表示日期时间的类,date类和time类的综合使用,可以处理年、月、日、时、分、秒;
    3. datetime.timedelta:表示时间间隔,即两个时间点的间隔,主要用于做时间加减的

    ⭐基本操作演示:(要背的嘎嘎熟练)

    from datetime import *  #导包
    year,month,day=1949,10,1
    a=date(year,month,day) #1949-10-01 00:00:00
    as=str(a).replace("-","")[:8]  #date类型转字符串,19491001
    ass=a.strftime("%Y%m%d%H%M%S") #date类型转字符串,aas=20121001000000
    b=date(2012,10,1)
    while a<=b:
        a+=timedelta(1) #timedelta(1):1天(时间单位)
    print(cnt)
    date(year,month,day) #格式转换函数:数字格式→日期格式
    a.weekday() #星期几函数,默认从星期一开始(下标为0)
    a.month #日历月份
    a.day   #日历天数
    

    ⭐strftime(format) 函数:接收以时间元组,并返回以可读字符串表示的当地时间,格式由参数format决定.

    %j 年内的一天(001-366)

    %U 一年中的星期数(00-53)星期天为星期的开始,%W 一年中的星期数(00-53)星期一为星期的开始

    %w 星期(0-6),星期天为星期的开始

    a=date(year,month,day)
    print(a.strftime("%j"))#strftime %j 输出某一年为一年中的第几天 包括区分闰年平年in
    

    ⭐calendar模块:

    1、判断是否为闰年
    import calendar
    calendar.isleap(2022) #False
    2、返回两年之间的闰年总数
    calendar.leapdays(2000,2020)
    

    ⭐日期合法化:

    def judge(str):#传入字符串形式的日期
        try:
            year=
            month=
            day=
            datetime.date(year,month,day)#如果日期不合法,会执行except下面那条语句,否则返回True
        except:
            return False
        return True
    

    优先级队列

    介绍:自动将队列中的结点从小到大排好序,速度比list列表通过排序模拟出来的快

    ⭐代码演示:

    from queue import PriorityQueue #优先队列
    a=list(map(int,input().split()))
    q=PriorityQueue()          #创建数据结构
    for i in a:
        q.put(i)               #入队
    q.qsize()!=1:        #队列大小
        a=q.get()              #出队 

    itertools模块

    介绍:可以实现字符串的排列和组合

    from itertools import *
    s=[1,2,3]#序列
    #l为排列组合的长度:从序列里面取几个出来
    l=2
    for i in permutations(s,l): #排列
       	print(i)
    for i in combinations(s,l): #组合
       	print(i)
    

    collections模块

    介绍:主要用到双向队列

    from collections import deque #双向队列
    queue=deque()
    #在两头插入元素的时候效率很高
    #常用操作append,popleft(),pop()
    

    Bisect模块

    ⭐只能用于升序数列:

    import bisect
     
    a=[0,1,2,3,3,3,5]#一段升序数组
     
    bisect.bisect(a,b)   #返回数组a中最后一个<=b的数字的下标+1
     
    bisect.bisect_left(a,3)  #返回数组中第一个等于3的下标
    bisect.bisect_right(a,3) #返回数组中最后一个等于3的下标+1
      
    #后两个如果不存在等于3的,和bisect.bisect等效
    

    List()集合

    介绍:list()集合可以存储任意类型元素

    ##二维列表:列表中的元素是列表,本质:一维列表
    a=[[1,2,3],[3,4,5]]
    list.append(lista)#lista当成一个元素加到前面的列表中
    lista+listb #才是拼接
    list.extend(str)#extend()里面是字符串时,每一个字符都是一个元素,里面要是list的话,则list当成一个元素加入
    list.extend([1,2,3])
    list.insert(index,obj)
    list.remove(obj)移除第一个匹配项
    list.index(obj)找出某个值第一个匹配项的下标
    list(seq)将字符串转为列表
    zip(list1,list2)用zip封装三列表,在for遍历
    

    ⭐sort():字符串是不能排序的,排序或者要更改数值要转化成list()列表。

    a=list(input())
    #排序
    a.sort(key = lambda x: (x[0],-x[1])) #,reverse=True 降序
    '''
    其中key表示按第几个关键字排序,lambda x:后()中的元素表示了关键字的优先级,第一位表示最高的优先级,第二位次之。。。
    其中下x[0]表示按第一个关键词的升序排列,-x[1]表示按第二个关键词的降序排列。
    '''
    

    set()集合

    介绍:set()集合其实就是数学中的集合

    x = set('runoob')
    y = set('google') #(set(['b', 'r', 'u', 'o', 'n']), set(['e', 'o', 'g', 'l']))   # 重复的被删除
    x & y         # 交集set(['o'])
    x | y         # 并集set(['b', 'e', 'g', 'l', 'o', 'n', 'r', 'u'])
    x - y         # 差集set(['r', 'b', 'u', 'n']
    y ^ x  #补集   #返回一个新的集合,包括集合 x 和 y 的非共同元素。
    

    Math模块

    ⭐代码演示:

    import math
    fabs(x):返回x的绝对值(float类型)
    factorial(x):取x阶乘的值
    gcd(x,y):返回x和y的最大公约数
    log(x[,base]):返回x的自然对数,默认以e为基数;base参数给定时,将x的对数返回给定的base
    floor(x):取小于等于x的最大整数值,如果x是一个整数,返回自身
    ceil(x) :“向上取整”, 即小数部分直接舍去,并向正数部分进1
    round() :“四舍五入”, 该函数返回的是一个四舍五入后的的整数
    pow(x,y):返回x的y次方,即x**y
    sqrt(x):返回x的平方根
    inf	:浮点正无限。(对于负无穷大,请使用math.inf)等同于float(‘inf')的输出