python——collections模块(deque)

使用list存储数据时,按索引访问元素很快,但是插入和删除元素就很慢了,因为list是线性存储,数据量大的时候,插入和删除效率很低。deque是为了高效实现插入和删除操作的双向列表,适合用于队列和栈。

初始化

下面代码先创建一个双向列表,初始化一些数据。

from collections import deque

a = deque([2,5,8,3,4])
print(a)
b = deque()
print(b)
c = deque('asdfg',4)
print(c)
d = deque((2,5,8))
print(d)
e = deque({2,5,8})
print(e)
f = deque({'a':1,'b':2,'c':3})
print(f)
deque([2, 5, 8, 3, 4])
deque([])
deque(['s', 'd', 'f', 'g'], maxlen=4)
deque([2, 5, 8])
deque([8, 2, 5])
deque(['a', 'b', 'c'])

deque方法初始化可以传入两个可选参数,第一个参数是一个可迭代对象iterable,第二个参数是双向列表的最大长度,一旦超过这个长度,将会自定去除左边的元素。

方法

  • append():往右边添加元素,一次只能添加一个,不然会报错。
from collections import deque

a = deque()
a.append(5)
a.append([2,3])
print(a)
deque([5, [2, 3]])
  • appendleft():往左边添加一个元素
>>>a.appendleft(6)
deque([6, 5, [2, 3]])
  • extend():向右边扩展一个列表元素
>>>a.extend([1,2,3])
deque([6, 5, [2, 3], 1, 2, 3])
  • extendleft():向左边扩展一个列表元素
>>>a.extendleft([5,6,7])
deque([7, 6, 5, 6, 5, [2, 3], 1, 2, 3])
  • insert(index,p_object)():指定位置插入元素
from collections import deque

a = deque([1,5,8,6,9,2,5])
a.insert(2,'z')
print(a)
deque([1, 5, 'z', 8, 6, 9, 2, 5])
  • copy():浅复制

from collections import deque

a = deque([1,5,6])
b = a.copy()
print(b)
deque([1, 5, 6])

  • pop():返回最右边的元素,并删除它
from collections import deque

a = deque([1,5,8,6,9,2,5])
print(a.pop())
print(a)
5
deque([1, 5, 8, 6, 9, 2])
  • popleft():返回最左边的元素,并删除它
>>>a.popleft()
1
>>>a
deque([5, 8, 6, 9, 2])
  • remove():删除指定元素,若有多个符合,先删除最左边的。返回None。
from collections import deque

a = deque([1,5,8,6,9,2,5])
print(a.remove(5))
print(a)
None
deque([1, 8, 6, 9, 2, 5])
  • clear():清空元素,返回一个空的双向列表

  • index(value[,start[,stop]]):查找某个元素的索引,可以限定查找范围
from collections import deque

a = deque([1,5,8,6,9,2,5])
print(a.index(5,3))
6
  • count():返回指定元素出现的次数
from collections import deque

a = deque([1,5,8,6,9,2,5])
print(a.count(5))
2

  • reverse():对元素进行反转
from collections import deque

a = deque([1,5,6,2,3])
a.reverse()
print(a)
deque([3, 2, 6, 5, 1])
  • rotate():把右边元素放左边,可加入参数指定放几次,默认一次。
from collections import deque

a = deque([1,5,6,2,3])
a.rotate(2)
print(a)
deque([2, 3, 1, 5, 6])

猜你喜欢

转载自blog.csdn.net/wzyaiwl/article/details/89262606
今日推荐