zoukankan      html  css  js  c++  java
  • 一些模块

    一、collections模块
    collections模块主要封装了⼀些关于集合类的相关操作,如Counter, deque, OrderDict, defaultdict以及namedtuple 等。

    1 Counter:计算可迭代对象里的元素出现次数,返回一个字典。并且可以对计算的次数和iterable进行如相加的操作。

    1.1计算字符串中字符的出现次数

    >>> collections.Counter('aaabbbbbccccdd')
    Counter({'b': 5, 'c': 4, 'a': 3, 'd': 2})

    1.2 还可以自己选择计数的元素,此时返回的是一个由元祖组成的列表。排列顺序是先按照次数多的排列,如果次数相同,先出现的先排列(collections.Counter('aaaAAAAbbbbbccccdd1111').most_common(3),3表示需计算的元素个数)

    >>> collections.Counter('aaaAAAAbbbbbccccdd1111').most_common(3)
    [('b', 5), ('A', 4), ('c', 4)]

    1.3 支持2个可迭代对象的计数相加,相减,集合的与,或等操作,举例:‘abbb'和'abcc’的计数结果相加

    >>> collections.Counter('abbb') + collections.Counter('abcc')
    Counter({'b': 4, 'a': 2, 'c': 2})

    2 deque 双向队列,队列queue,栈

    队列和栈是两种常用的数据结构,它们特点是1.队列-FIFO即First in First Out,先进先出;2.栈-FILO即先进最后出;而双向队列是TITO(Two In Two out)两头进,两头出

    2.1 队列,用起来非常简洁明了,.put加队列,.get出队列

    >>> import queue
    >>> q=queue.Queue()
    >>> q.put('第一个')
    >>> q.put('第二个')
    >>> q.get()
    '第一个'
    >>> q.get()
    '第二个'

    如果队列没元素了还往外取元素,此时程序会阻塞。

    >>> q.get()
    PS:一直停在这里,等待着,像交通阻塞一样

    2.2 双向队列

    双向队列和队列一样,只是进队列变成.append,出队列变成.pop。注意,deque是在collections 模块中的。

    >>> from collections import deque
    >>> q = deque()
    >>> q.append('第一个') # 默认从右边添加
    >>> q.append('第二个')
    >>> q.appendleft('左边第一个') # 左边添加
    >>> q.appendleft('左边第二个')
    >>> q
    deque(['左边第二个', '左边第一个', '第一个', '第二个'])
    >>> q.pop()
    '第二个'
    >>> q.popleft() # 左边删除
    '左边第二个'

    2.3 栈

    栈和队列相反,先进后出,在python里栈是有上限的,为1000,但是可以手动修改。或者可以这样理解:栈是一个可以手动修改大小的特殊的有序表。

    一个栈最起码要有3个属性:1.容器,即用来放栈的地方;2.大小,规定了这个容器的容量;3 栈顶指针,即下一个元素的定位,定位元素以便能拿取元素

    3 namedtuple 命名元组
    对元素进行命名

    >>> s = namedtuple('sky',['x','y','z'])
    >>> obj = s(1,2,3)
    >>> obj
    sky(x=1, y=2, z=3)
    >>> obj.z
    3

    4 对字典进行操作

    orderdict:把字典变成有序字典

    defaultdict: 可以给字典设置默认值. key不存在时. 直接获取默认值 。注意,默认值必须是可调用对象,如函数

    二  time 模块

    time模块是一个常用的模块,记住时间戳和字符串的转换,还有UTC时间和local时间的区别,其他的用到时再查看文档。

    时间戳转字符串:stamp--(time.gmtime(t))-->struct_time--(time.strftime(format,time_tuple))-->str

    字符串转时间戳: str--(time.strptime(str,format)-->struct_time--(time.mktime(time_tuple))-->stamp

    除了localtime外,其他用的是UTC时间,起始时间是1970-01-01

    三 random模块

    random模块处理随机数

    .random() # 0-1的小数

    .uniform(m,n) #m-n的小数

    .randint(m,n) # m-n的整数

    .choice(iterable) # 循环可迭代对象

    .sample(iterable,n) # 可迭代对象里取n个数

    .shuffle(iterable)# 打乱顺序

    四 os模块

    与操作系统交互的模块,os.popen('cmd').read() # 执行操作系统命名cmd并拿到结果

    os.path.* 处理与环境变量相关的东西

    五 sys模块

    处理与python解释器相关的

     

  • 相关阅读:
    gridview列前加复选框需要注意的一点
    为什么日历控件放在panel无法显示出来
    表格翻页
    The SDK platform-tools version ((21)) is too old to check APIs compiled with API 23
    win7怎么安装和启动 jboss
    (转)如何制作nodejs,npm “绿色”安装包
    Can't use Subversion command line client: svn
    (转)Android自定义属性时format选项( <attr format="reference" name="background" /> )
    本地拒绝服务漏洞修复建议
    (转)Android 读取联系人(详细)
  • 原文地址:https://www.cnblogs.com/jackfree/p/10063509.html
Copyright © 2011-2022 走看看