先决条件: 列表 和 Python中的Deque .
与C++ STL和java集合不同,Python确实有特定的类/接口 堆栈 和 队列 .以下是用Python实现的不同方法
1) 使用列表 堆栈 工作遵循“后进先出”的原则。此外,Python中的内置函数使代码简短。要将项目添加到列表顶部,即推送项目,我们使用 附加() 函数并弹出我们使用的元素 pop() 作用这些功能在终端操作中安静、高效、快速地工作。
让我们看一个例子,了解push()和pop()函数的工作原理: 例子:
# Python code to demonstrate Implementing # stack using list stack = [ "Amar" , "Akbar" , "Anthony" ] stack.append( "Ram" ) stack.append( "Iqbal" ) print (stack) # Removes the last item print (stack.pop()) print (stack) # Removes the last item print (stack.pop()) print (stack) |
['Amar', 'Akbar', 'Anthony', 'Ram', 'Iqbal'] Iqbal ['Amar', 'Akbar', 'Anthony', 'Ram'] Ram ['Amar', 'Akbar', 'Anthony']
队列 工作遵循“先进先出”的原则。下面是队列的实现列表。我们使用pop(0)从列表中删除第一项。
# Python code to demonstrate Implementing # Queue using list queue = [ "Amar" , "Akbar" , "Anthony" ] queue.append( "Ram" ) queue.append( "Iqbal" ) print (queue) # Removes the first item print (queue.pop( 0 )) print (queue) # Removes the first item print (queue.pop( 0 )) print (queue) |
['Amar', 'Akbar', 'Anthony', 'Ram', 'Iqbal'] Amar ['Akbar', 'Anthony', 'Ram', 'Iqbal'] Akbar ['Anthony', 'Ram', 'Iqbal']
2) 使用Deque 对于堆栈,列表实现可以很好地工作,并在O(1)时间内提供append()和pop()。当我们使用deque实现时,我们得到了相同的时间复杂度。
# Python code to demonstrate Implementing # Stack using deque from collections import deque queue = deque([ "Ram" , "Tarun" , "Asif" , "John" ]) print (queue) queue.append( "Akbar" ) print (queue) queue.append( "Birbal" ) print (queue) print (queue.pop()) print (queue.pop()) print (queue) |
deque(['Ram', 'Tarun', 'Asif', 'John']) deque(['Ram', 'Tarun', 'Asif', 'John', 'Akbar']) deque(['Ram', 'Tarun', 'Asif', 'John', 'Akbar', 'Birbal']) Birbal Akbar deque(['Ram', 'Tarun', 'Asif', 'John'])
但是,对于队列,上面的列表实现效率不高。在队列中,当从列表开始执行pop()时,速度较慢。这是由于list的属性造成的,它在结束操作时很快,但在开始操作时很慢,因为所有其他元素都必须逐个移动。 因此,我们更喜欢使用队列而不是列表,它是专门设计的,可以从前端和后端快速添加和弹出。
让我们看一个例子,试着理解使用集合的队列。德克:
# Python code to demonstrate Implementing # Queue using deque from collections import deque queue = deque([ "Ram" , "Tarun" , "Asif" , "John" ]) print (queue) queue.append( "Akbar" ) print (queue) queue.append( "Birbal" ) print (queue) print (queue.popleft()) print (queue.popleft()) print (queue) |
deque(['Ram', 'Tarun', 'Asif', 'John']) deque(['Ram', 'Tarun', 'Asif', 'John', 'Akbar']) deque(['Ram', 'Tarun', 'Asif', 'John', 'Akbar', 'Birbal']) Ram Tarun deque(['Asif', 'John', 'Akbar', 'Birbal'])
本文由 金莫伦卡 .如果你喜欢GeekSforgek,并想贡献自己的力量,你也可以使用 贡献极客。组织 或者把你的文章寄到contribute@geeksforgeeks.org.看到你的文章出现在Geeksforgeks主页上,并帮助其他极客。
如果您发现任何不正确的地方,或者您想分享有关上述主题的更多信息,请写下评论。