python deque用法「python dequeue」

我不是码神2024-01-14python11

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'])

评论列表

怡然
怡然
2024-02-05

Python的deque模块提供了高效的双端队列操作,无论是在数据科学还是在其他需要频繁进行添加和删除操作的场景中,都是一个非常有用的工具。

王洁
王洁
2024-02-20

Python的deque(双端队列)是一个非常有用的数据结构,它允许我们在两端高效地添加和删除元素,无论是在处理大量数据还是需要频繁在队列两端进行操作的场景中,deque都能提供卓越的性能。

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。