当前位置:   article > 正文

Python中collections模块中的deque_from collections import deque

from collections import deque

deque是栈和队列的一种广义实现,deque是"double-end queue"的简称;deque支持线程安全、有效内存地以近似O(1)的性能在deque的两端插入和删除元素,尽管list也支持相似的操作,但是它主要在固定长度操作上的优化,从而在pop(0)和insert(0,v)(会改变数据的位置和大小)上有O(n)的时间复杂度。

导包:

from collections import deque

常用方法:

append():从右端添加元素

appendleft():从左端添加元素

extend():从右端添加可迭代对象,Python中的可迭代对象有:列表、元组、字典、字符串

  1. from collections import deque
  2. ex = (1, "h", 3)
  3. st = "abcd"
  4. list1 = [0, 1, 2, 3]
  5. dst = deque(st)
  6. dlist1 = deque(list1)
  7. dst.extend(ex)
  8. dlist1.extend(ex)
  9. print(dst)
  10. print(dlist1)
  11. #结果:
  12. #deque(['a', 'b', 'c', 'd', 1, 'h', 3])
  13. #deque([0, 1, 2, 3, 1, 'h', 3])

extendleft():从左端添加可迭代对象

pop():移除列表中的一个元素(默认最右端的一个元素),并且返回该元素的值,如果没有元素,将会报出IndexError

popleft():移除列表中的一个元素(默认最左端的一个元素),并且返回该元素的值,如果没有元素,将会报出IndexError

count():统计队列中的元素个数

insert(index,obj):在指定位置插入元素

  1. from collections import deque
  2. st = "abbcd"
  3. dst = deque(st)
  4. dst.insert(0, "chl")
  5. print(dst)
  6. #结果:
  7. #deque(['chl', 'a', 'b', 'b', 'c', 'd'])

rotate(n):从右侧反转n步,如果n为负数,则从左侧反转。
d.rotate(1) 等于 d.appendleft(d.pop())

  1. from collections import deque
  2. st = "abbcd"
  3. dst = deque(st)
  4. dst.rotate(1)
  5. print(dst)
  6. #结果:
  7. #deque(['d', 'a', 'b', 'b', 'c'])

clear():将deque中的元素全部删除,最后长度为0

remove():移除第一次出现的元素,如果没有找到,报出ValueError

  1. from collections import deque
  2. st = "abbcd"
  3. dst = deque(st)
  4. dst.remove("a")
  5. print(dst)
  6. dst.remove("f")
  7. #结果:
  8. #deque(['b', 'b', 'c', 'd'])
  9. #ValueError: deque.remove(x): x not in deque

maxlen:只读的属性,deque限定的最大长度,如果无,就返回None。
当限制长度的deque增加超过限制数的项时, 另一边的项会自动删除

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/从前慢现在也慢/article/detail/620284
推荐阅读
相关标签
  

闽ICP备14008679号