bonfy / problems

record problems I have met and solved
2 stars 1 forks source link

python中的Queue, Stack, List #3

Open bonfy opened 7 years ago

bonfy commented 7 years ago

感觉python中的List很强大,所以好多的类很少用到

看看List 与 Queue、Stack的实现

bonfy commented 7 years ago
lst = [1, 2, 3]
lst.pop(0)       # out: 1  lst: [2, 3]
lst.append(4)    # lst:[2, 3, 4]

from queue import Queue

q = Queue()
q.put(1)
q.put(2)
q.queue    # dqueue([1, 2])
q.get()    # out 1

Queue 就是先进先出, 简单的可以用 List 替代,进用 list.append, 出用 list.pop(0)

q = Queue(maxsize = 10)

Queue.Queue类即是一个队列的同步实现。队列长度可为无限或者有限。可通过Queue的构造函数的可选参数maxsize来设定队列长度。如果maxsize小于1就表示队列长度无限。

将一个值放入队列中

Queue.put(10)

调用队列对象的put()方法在队尾插入一个项目。put()有两个参数,第一个item为必需的,为插入项目的值;第二个block为可选参数, 默认为1。如果队列当前为空且block为1,put()方法就使调用线程暂停,直到空出一个数据单元。如果block为0,put方法将引发Full异 常。

将一个值从队列中取出

Queue.get()

调用队列对象的get()方法从队头删除并返回一个项目。可选参数为block,默认为True。如果队列为空且block为True,get()就使调用线程暂停,直至有项目可用。如果队列为空且block为False,队列将引发Empty异常。

bonfy commented 7 years ago
lst = [1, 2, 3]
lst.pop()        # or lst.pop(-1) out: 3  lst: [1, 2]
lst.append(4)    # lst:[1, 2, 4]

Stack的实现