Python中的Deque

Python中的Deque

Queue 是一个核心库,允许用户根据先进先出(FIFO)原则定义基于列表的队列。相反,Python中的 Deque 拥有相反的原则: LIFO(后进先出) 队列。在以下教程中,我们将通过一些示例仅了解Python中的Deque是什么。

所以,让我们开始吧。

理解Python中的Deque

Deque ,也称为 双端队列 ,具有从任一端插入和删除数据元素的属性。deque模块是称为collections的库的一部分。它包含了添加和删除数据元素的属性,可以直接使用参数调用。为了声明一个deque,我们必须首先导入 collections 库。

让我们考虑以下语法来了解Python中的deque模块如何工作。

语法:

# importing the deque module
# from the collections library
from collections import deque
# declaring the deque
list_name = deque()

解释:

在上面的代码片段中,我们从collections库中导入了deque模块,并通过将列表的名称(即list_name)赋值给deque()模块来声明deque。在这里,我们还可以观察到,我们不需要任何类来实现这些内置方法。它们可以直接实现。

让我们来看一个基于deque模块的简单示例。

示例:

# importing the deque module
# from the collections library
from collections import deque

# declaring the deque
fruit_list = deque(['Apple', 'Mango', 'Peaches', 'Banana', 'Papaya'])

# printing the deque
print(fruit_list)

输出:

deque(['Apple', 'Mango', 'Peaches', 'Banana', 'Papaya'])

描述:

在上面的示例中,我们从 collections 库中导入了 deque 模块。然后,我们使用 deque 模块定义了一个水果列表作为一个 deque,指定了一些水果名称。然后,我们打印了声明的 Deque。结果,声明的包含一堆水果名称的 Deque 成功地被打印出来。

现在,让我们了解一下 deque 上的各种操作。

deque 上的一些操作

deque 上有各种可以使用的操作。下面列出了其中一些操作及其描述:

序号 操作 描述
1 append() append() 函数用于将参数中的数据元素添加到双端队列的右端。
2 appendleft() appendleft() 函数用于将参数中的数据元素添加到双端队列的左端。
3 pop() pop() 函数用于从双端队列的右端删除数据元素。
4 popleft() popleft() 函数用于从双端队列的左端删除数据元素。
5 index(element, begin, end) index() 函数用于返回参数中指定的第一个索引值,从 begin 索引开始搜索,直到 end 索引。
6 insert(i, x) insert() 函数用于在参数中指定的索引号 i 处插入值 x。
7 remove() remove() 函数用于删除参数中指定的第一个出现的值。
8 count() count() 函数用于计算参数中指定的值的总出现次数。
9 extend(iterable) extend() 函数用于在双端队列的右端插入多个数据元素。传递的参数是可迭代的。
10 extendleft(iterable) extendleft() 函数用于在双端队列的左端插入多个数据元素。传递的参数是可迭代的。输出中的顺序也会被反转。
11 reverse() reverse() 函数用于反转双端队列的数据元素的顺序。
12 rotate() rotate() 函数用于将双端队列旋转指定的次数,通过参数指定。如果指定的次数是负值,则向左旋转;否则向右旋转。

现在让我们考虑一些基于 deque 模块的示例。

示例:

# importing the collections library
# for deque operations
import collections

# declaring the deque
my_deque = collections.deque([10, 20, 30, 40, 50])

# using the append() function to add 
# data element at right end
# inserting 60 at the end of the deque
my_deque.append(60)

# printing the resultant deque
print( "The deque after appending at right: " )
print( my_deque )

# using the appendleft() function to add
# data element at left end
# inserting 70 at the starting of the deque
my_deque.appendleft(70)

# printing the resultant deque
print( "The deque after appending at left: " )
print( my_deque )

# using the pop() function to remove
# data element from the right end
# removing 60 from the right end of deque
my_deque.pop()

# printing the resultant deque
print( "The deque after removing from right: " )
print( my_deque )

# using the popleft() function to remove
# data element from the left end
# removing 70 from the left end of deque
my_deque.popleft()

# printing the resultant deque
print("The deque after removing from left: " )
print( my_deque )

输出:

The deque after appending at right: 
deque([10, 20, 30, 40, 50, 60])
The deque after appending at left:
deque([70, 10, 20, 30, 40, 50, 60])
The deque after removing from right:
deque([70, 10, 20, 30, 40, 50])
The deque after removing from left:
deque([10, 20, 30, 40, 50])

说明:

在上面的代码片段中,我们导入了 collections 库并声明了一个deque。然后我们使用了像 append()appendleft() 这样的操作来插入一些数据元素到deque的两端,并打印修改后的deque给用户。类似地,我们还使用了像 pop()popleft() 这样的操作来从deque的两端移除数据元素,并打印结果deque给用户。

示例:

# importing the collections library
import collections

# declaring the deque
my_deque = collections.deque(['Jan', 'Feb', 'Mar', 'Mar', 'Feb', 'April', 'Feb'])

# using the index() function to print
# the first occurrence of data element: Feb
print( "The first occurs of 'Feb' at a position: " )
print( my_deque.index('Feb', 2, 7) )

# using the insert() function to insert
# the data element 'Jan' at 4th position
my_deque.insert(3,'Jan')

# printing the resultant deque
print( "The deque after inserting 'Jan' at 4th position: " )
print( my_deque )

# using the count() function to count
# the occurrences of data element 'Feb'
print( "The count of 'Feb' in deque: " )
print( my_deque.count('Feb') )

# using the remove() function to remove
# the first occurrence of data element 'Mar'
my_deque.remove('Mar')

# printing the resultant deque
print( "The deque after removing the first occurrence of 'Mar': " )
print( my_deque )

输出:

The first occurs of 'Feb' at a position:
4
The deque after inserting 'Jan' at 4th position:
deque(['Jan', 'Feb', 'Mar', 'Jan', 'Mar', 'Feb', 'April', 'Feb'])
The count of 'Feb' in deque:
3
The deque after removing the first occurrence of 'Mar':
deque(['Jan', 'Feb', 'Jan', 'Mar', 'Feb', 'April', 'Feb'])

解释:

在上面的代码段中,我们再次导入了 collections 库并声明了一个deque。然后我们使用了 index() 操作来检查数据元素 ‘Feb’ 在索引号 27 之间的第一次出现。然后我们使用了 insert() 操作在第4个位置插入数据元素 ‘Jan’ 。然后我们使用了 count() 操作来计算deque中数据元素 ‘Feb’ 的出现次数。最后,我们使用了 remove() 操作来移除deque中第一次出现的数据元素 ‘Mar’ ,并将结果deque打印给用户。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程