python deque用法「python dequeue」
Python的collections
模块中提供了一个双端队列(deque)类,它实现了在两端高效插入和删除元素的功能,双端队列是一种特殊的线性表,它的两端都可以进行元素的插入和删除操作,本文将详细介绍Python deque的用法,包括创建、基本操作、常用方法等。
创建deque
要创建一个deque对象,可以使用collections.deque()
函数,或者直接从collections
模块中导入deque
类,以下是两种创建deque的方法:
1、使用collections.deque()
函数创建:
from collections import deque d = deque()
2、直接从collections
模块中导入deque
类创建:
from collections import deque d = deque()
基本操作
1、向deque中添加元素:可以使用append()
方法在deque的右侧添加元素,使用appendleft()
方法在deque的左侧添加元素,以下是示例代码:
from collections import deque d = deque([1, 2, 3]) d.append(4) # 在右侧添加元素4 d.appendleft(0) # 在左侧添加元素0 print(d) # 输出:deque([0, 1, 2, 3, 4])
2、从deque中删除元素:可以使用pop()
方法删除deque右侧的元素,使用popleft()
方法删除deque左侧的元素,以下是示例代码:
from collections import deque d = deque([1, 2, 3]) d.pop() # 删除右侧的元素3 d.popleft() # 删除左侧的元素1 print(d) # 输出:deque([2])
常用方法
1、len()
:返回deque中元素的个数,以下是示例代码:
from collections import deque d = deque([1, 2, 3]) print(len(d)) # 输出:3
2、maxlen()
:返回deque的最大长度,如果设置了最大长度并且deque的长度超过了最大长度,那么当执行插入操作时,deque会自动缩减到最大长度,以下是示例代码:
from collections import deque d = deque([1, 2, 3], maxlen=2) d.append(4) # deque自动缩减为[1, 2],并删除右侧的元素3 print(d) # 输出:deque([1, 2])
3、extend()
:用于合并两个或多个可迭代对象的元素到deque中,以下是示例代码:
from collections import deque d = deque([1, 2, 3]) d.extend([4, 5, 6]) # 合并[4, 5, 6]到deque中,结果为[1, 2, 3, 4, 5, 6] print(d) # 输出:deque([1, 2, 3, 4, 5, 6])
4、extendleft()
:用于合并两个或多个可迭代对象的元素到deque的左侧,以下是示例代码:
from collections import deque d = deque([1, 2, 3]) d.extendleft([4, 5, 6]) # 合并[4, 5, 6]到deque的左侧,结果为[4, 5, 6, 1, 2, 3] print(d) # 输出:deque([4, 5, 6, 1, 2, 3])
5、insert()
:在指定位置插入一个元素,以下是示例代码:
from collections import deque d = deque([1, 2, 3]) d.insert(1, 'a') # 在索引1的位置插入元素'a',结果为[1, 'a', 2, 3] print(d) # 输出:deque([1, 'a', 2, 3])
6、remove()
:删除指定值的第一个匹配项,如果没有找到匹配项,会抛出异常,以下是示例代码:
from collections import deque d = deque([1, 'a', 'b', 'c']) d.remove('a') # 删除第一个匹配项'a',结果为[1, 'b', 'c'] print(d) # 输出:deque([1, 'b', 'c'])
7、pop()
:删除并返回deque右侧的元素,如果没有元素可以删除,会抛出异常,以下是示例代码:
from collections import deque d = deque([1, 'a', 'b', 'c']) x = d.pop() # 删除并返回右侧的元素'c',结果为[1, 'a', 'b'],x的值为'c' print(x) # 输出:'c' print(d) # 输出:deque([1, 'a', 'b'])
8、popleft()
:删除并返回deque左侧的元素,如果没有元素可以删除,会抛出异常,以下是示例代码:
from collections import deque d = deque([1, 'a', 'b', 'c']) x = d.popleft() # 删除并返回左侧的元素'1',结果为['a', 'b', 'c'],x的值为'1' print(x) # 输出:'1' print(d) # 输出:deque(['a', 'b', 'c'])