前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python的数据结构整理

Python的数据结构整理

作者头像
哒呵呵
发布2018-08-06 14:22:06
3070
发布2018-08-06 14:22:06
举报
文章被收录于专栏:鸿的学习笔记鸿的学习笔记

一、字典

别名:maps, hashmaps, lookup tables, associative arrays

创建:a={'a':'b'}

优点:对于查找,插入,更新以及删除,时间复杂度为O(1)

变种:

1.collections.OrderedDict

可以记住插入顺序的字典

importcollections

d=collections.OrderedDict(a=1,b=2)

d

Out[3]: OrderedDict([('a', 1), ('b', 2)])

d['c']=3

d

Out[5]: OrderedDict([('a', 1), ('b', 2),('c', 3)])

2.collections.defaultdict

如果没有查到对应的key值,返回默认值的字典

d=collections.defaultdict(list)

d['a'].append(1)

d

Out[12]: defaultdict(list, {'a': [1]})

3.collections.ChainMap

可以当作一个字典去查找多个字典

a={'a':1}

b={'b':2}

chain=collections.ChainMap(a,b)

chain['a']

Out[17]: 1

4. types.MappingProxyType

给字典提供一个只读的视图对象

writable = {'a':1}

import types

read_only = types.MappingProxyType(writable)

read_only['a']

Out[21]: 1

read_only['a']=2

Traceback (most recent call last):

File"<ipython-input-22-5f97afe708c4>", line 1, in <module>

read_only['a']=2

TypeError: 'mappingproxy' object does not support item assignment

writable['b']=2

read_only['b']

Out[24]: 2

二、序列

1.list

可变的动态序列

A=[1,2,3]

2.tuple

不可变的容器

A=(1,2,3)

3.array.array

提供基本的类型序列,存储在里面的序列都是已确定好类型,其实就是C的数组

import array

arr = array.array('f', (1,2,3))

arr

Out[27]: array('f', [1.0, 2.0, 3.0])

4.str

字符串

A=’dad’

5.bytes

不可变的单字节序列

arr=bytes((0,1,))

arr

Out[29]: b'\x00\x01'

6.bytearray

可变的单字节序列

arr=bytearray((0,1,))

arr

Out[31]: bytearray(b'\x00\x01')

7.collections.namedtuple

带名字的tuple,tuple的元素每个都具有自己的名字

tuple1 = collections.namedtuple('test','ab')(1,2)

tuple1

Out[34]: test(a=1, b=2)

三、集合

1.set

无序,内部元素唯一的集合,查找效率是O(1)

A={1,2,3}

2.frozenset

不可变集合

a=frozenset({1,2,3})

3.collections.Counter

内部存储着元素更新次数的集合

a=collections.Counter()

a.update({'a':2})

a

Out[43]: Counter({'a': 2})

a.update({'a':1,'b':2})

a

Out[45]: Counter({'a': 3, 'b': 2})

四、Stacks

1.collections.deque

兼具效率和健壮性的栈

a=collections.deque()

a.append('a')

a.append('b')

a.pop()

Out[49]: 'b'

2.queue.LifoQueue

内置了锁功能的栈,可用于生产者消费者模式的并行

import queue

a=queue.LifoQueue()

a.put('a')

a.put('b')

a.get('a')

Out[54]: 'b'

五、Queues

1.queue.Queue

内置了锁功能的队列,可用于生产者消费者模式的并行

a=queue.Queue()

a.put('a')

a.put('b')

a.get()

Out[61]: 'a'

2. multiprocessing.Queue

可在Job间共享的队列

import multiprocessing

a=multiprocessing.Queue()

a.put('a')

a.put('b')

a.get()

Out[66]: 'a'

六、Prioritity Queues

1.heapq

内部保证相对有序的队列

import heapq

q=[]

heapq.heappush(q,(2,'b'))

heapq.heappush(q,(1,'a'))

heapq.heappush(q,(3,'c'))

while q:

print(heapq.heappop(q))

(1, 'a')

(2, 'b')

(3, 'c')

2. queue.PriorityQueue

支持并发的优先队列

q=queue.PriorityQueue()

q.put((2,'b'))

q.put((1,'a'))

q.put((3,'c'))

while not q.empty():

print(q.get())

(1, 'a')

(2, 'b')

(3, 'c')

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-02-21,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 鸿的学习笔记 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档