zoukankan      html  css  js  c++  java
  • 认识模块

    引入模块的方式:

    import 模块

    from xxx import 模块

    简单的模块认识:

    collections 中封装了一些集合类的相关操作,比如我们学过的lterable,lterator, Counter, deque, OrderDict, defaultdict以及namedtuple

    lterable,lterator,是迭代器以及可迭代对象

    Counter 计数器

    实例:  两个例子打印结果是一样的

    s = "alex like pig"
      print(Counter(s))

    s = "alex like pig"
      dic = {}
    for c in s:
      dic[c] = dic.get(c, 0) + 1
    print(dic)

    deque 双向队列:

    (重点)说双向队列之前我们需要了解两种数据结构. 1. 栈, 2. 队列
    1. 栈: FILO. 先进后出 -> 砌墙的砖头, 老师傅做馒头
    2. 队列: FIFO. 先进先出 -> 买火车票排队, 所有排队的场景

    栈的增加以及删除:

    # class stackException (Exception):   #自定义一个异常类
    # pass
    # class Stack:
    # def __init__(self,saiz): #封装属性,saiz指的是最后一个元素+1, 创建了一个索引以及空列表
    # self.index = 0
    # self.saiz =saiz
    # self.lst = []
    #
    # def add(self,yuan): #进行多重判断如果,索引等于了saiz了,搜索的类目就已经溢出了,然后抛出我们自定义的异常,如果没有的话在相应的索引位置插入一个元素
    # if self.index == self.saiz:
    # raise stackException("溢出了")
    # self.lst.insert(self.index,yuan)
    # self.index += 1
    #
    # def del_yuan(self): #当saiz指针等于0就代表列表没有元素,就抛出异常,否则,将拿出最后一个放进去的元素
    # if self.saiz == 0:
    # raise stackException
    # self.index -= 1
    # item = self.lst.pop(self.index)
    # return item
    遵循一个原则,最先放进去的最后取值

    队列: python提供了queue模块. 使用起来非常方便
    import queue
    q = queue.Queue()
    q.put("李嘉诚")   #往队列里面添加值
    q.put("张开")
    q.put("张毅")
    print(q)
    print(q.get())  #get  向外拿出,先放进去的先拿出来的
    print(q.get())  #如果队列里面已经没有元素还在往外面拿值得话,会进入死循环
    print(q.get())

    双向队列:两边都可以放入值,都可以往外面取值

    # from collections import deque    #因为deque队列是collection中的,所以要从collection中导入
    # d = deque()
    # d.append("邓超")
    # d.append("孙俪")
    # d.append("黄晓明")
    # d.append("杨颖")
    # d.appendleft("林更新") #append是从右面传入值,appendleft从左边去传值

    # print(d.pop())     #从右边拿数据
    # print(d.popleft()) #从左边拿数据
    # print(d.popleft())
    # print(d.popleft())
    # print(d.pop())



    命名元祖 namedtuple
    from collections import namedtuple
    nt = namedtuple("名称"["x","y"])
    n = nt(12,23)
    打印结果 n的结果是名称(x=12,y=23)也可以单一打印 n.x或者n.y

    orderdict和defaultdict
    orderdict 顾名思义. 字典的key默认是无序的. OrderedDict是有序的

    dic = {'a':'娃哈哈', 'b':'薯条', 'c':'胡辣汤'}
    print(dic)
    from collections import OrderedDict
    od = OrderedDict({'a':'娃哈哈', 'b':'薯条', 'c':'胡辣汤'})
    print(od)

    defaultdict: 可以给字典设置默认值. 当key不存在时. 直接获取默认值:

    # from collections import defaultdict
    # lst = [1,2,3,4,5,6,7,8,9,10]
    # # d = defaultdict(list)
    # for el in lst:
    # if el > 5:
    # d["key1"].append(el)
    # else:
    # d["key2"].append(el)
    # print(d)





  • 相关阅读:
    【bzoj5180】[Baltic2016]Cities 斯坦纳树
    【BZOJ1859】【ZJOI2006】碗的叠放
    【bzoj4589】Hard Nim FWT+快速幂
    【BZOJ1502】【NOI2005】月下柠檬树 simpson 积分
    【loj6437】 【PKUSC2018】 PKUSC 计算几何
    【PKUSC2018】【loj6433】最大前缀和 状压dp
    【pkuwc2018】 【loj2537】 Minmax DP+线段树合并
    多项式求逆元详解+模板 【洛谷P4238】多项式求逆
    【bzoj3684】 大朋友和多叉树 生成函数+多项式快速幂+拉格朗日反演
    【codeforces 623E】dp+FFT+快速幂
  • 原文地址:https://www.cnblogs.com/lowen107/p/9959946.html
Copyright © 2011-2022 走看看