python内建模块-Collections

转自本人旧博客


title: Collections
date: 2017-07-21 18:29:01
tags: python
categories: python内建模块


Collections是python内建的一个集合模块,提供了许多有用的集合类

提供的集合类

defaultdict

from collections import defaultdict

counter

  • 计数器,可以针对某项数据进行计数
	from collections import Counter
	colours = (
	    ('Yasoob', 'Yellow'),
	    ('Ali', 'Blue'),
	    ('Arham', 'Green'),
	    ('Ali', 'Black'),
	    ('Yasoob', 'Red'),
	    ('Ahmed', 'Silver'),
	)
	favs = Counter(name for name, colour in colours)
	print(favs)
	输出:
	Counter({
	     'Yasoob': 2,
	     'Ali': 2,
	     'Arham': 1,
	     'Ahmed': 1
	 })

deque

  • 它提供了一个双端队列,可以从头或尾两端添加或删除元素

  • 用法类型python的list

    from collections import deque
    d = deque()
    d.append(‘1’)
    d.append(‘2’)
    d.append(‘3’)
    print(len(d))
    输出: 3
    print(d[0])
    输出: 1

  • 可以从两端取出(pop)数据:

    d = deque(range(5))
    print(len(d))
    输出: 5
    d.popleft()
    输出: 0
    d.pop()
    输出: 4
    print(d)
    输出: deque([1, 2, 3])

  • 可以限制这个列表的大小,当超出你设定的限制时,数据会从对队列另一端被挤出去(pop)

      d = deque(maxlen=30)
    
  • 可以从任一端扩展这个队列中的数据:

    d = deque([1,2,3,4,5])
    d.extendleft([0])
    d.extend([6,7,8])
    print(d)
    输出: deque([0, 1, 2, 3, 4, 5, 6, 7, 8])

namedtuple

元组
  • 一个元组是一个不可变的列表,你可以存储一个数据的序列,它和命名元组(namedtuples)非常像,但有几个关键的不同。
  • 主要相似点:
    • 不能修改元组中的数据。

    • 获取元组中的数据,需要使用整数作为索引:

      man = (‘Ali’, 30)
      print(man[0])
      输出: Ali

命名元组
  • namedtuples: 把元组变成一个针对简单任务的容器。

    • 可以像字典一样访问namedtuples

    • 但namedtuples是不可变的。

      from collections import namedtuple
      Animal = namedtuple(‘Animal’, ‘name age type’)
      perry = Animal(name=“perry”, age=31, type=“cat”)
      print(perry)
      输出: Animal(name=‘perry’, age=31, type=‘cat’)
      print(perry.name)
      输出: ‘perry’

    • 上例中,元组名称是Animal,字段名称是’name’,‘age’和’type’。

  • namedtuple优点:

    • 让你的元组变得自文档了。你只要看一眼就很容易理解代码是做什么的
    • 你也不必使用整数索引来访问一个命名元组,这让你的代码更易于维护。
    • namedtuple的每个实例没有对象字典,所以它们很轻量,与普通的元组比,并不需要更多的内存。这使得它们比字典更快。
  • 可以将命名元祖转化为字典

    from collections import namedtuple
    Animal = namedtuple(‘Animal’, ‘name age type’)
    perry = Animal(name=“Perry”, age=31, type=“cat”)
    print(perry._asdict())
    输出: OrderedDict([(‘name’, ‘Perry’), (‘age’, 31), (‘type’, ‘cat’)])

enum.Enum (Python 3.4+)

枚举对象

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值