PYTHON基础篇9

目录

每日文案

一、队列是什么?

二、队列的操作

三、栈是什么

四、栈的操作

总结


每日文案

我们有过各种创伤,但我们应该今天快活


一、队列是什么?

        队列是一种数据结构,它遵循先进先出(FIFO,First In First Out)的原则。在这个结构中,元素的添加总是在一端进行,这端被称为队尾(rear),而元素的移除总是在另一端进行,这端被称为队头(front)。想象一下现实生活中的排队场景,新来的人总是在队伍的最后面排队,而队伍最前面的人则是下一个离开队伍的。这种数据结构在计算机科学中广泛应用,如任务调度、缓冲处理和资源共享等场景。

二、队列的操作

        在Python编程语言中,我们可以通过内置的`queue`模块来创建和管理队列,这个模块提供了包括普通队列和优先级队列在内的多种队列类型。特别是`queue.Queue`类,它是一个线程安全的队列实现。当然,你也可以使用列表(list)来模拟队列的行为,尽管这样可能需要自己处理一些额外的逻辑。

队列的基本操作可以归纳为以下几点:

  1.  查询长度:要了解队列中有多少个元素,可以通过调用列表的`len()`方法来获取当前队列的大小。
  2.  检查空队列:要判断队列是否为空,可以通过检查队列(列表)是否包含元素,通常使用`if not queue`语句来实现。
  3. 添加元素:向队列中添加新元素,即执行入队操作,可以通过在列表的末尾添加元素,使用`queue.append()`方法。
  4. 移除元素:从队列中移除并返回队列头部的元素,即执行出队操作,可以通过`queue.pop(0)`来实现,这里`0`是列表头部元素的索引。
  5. 查看头部元素:获取队列头部的元素,但不将其从队列中移除,可以通过直接访问列表的第一个元素,使用`queue[0]`来查看。

        这些操作使得队列成为处理顺序相关任务时的理想数据结构。在Python中,列表提供了一种简单的方式来模拟队列的行为,尽管它可能不如`queue.Queue`类那样高效或线程安全。

# 导入queue模块
import queue

# 创建一个队列
q = queue.Queue()

# 通过put()实现入队操作
q.put(1)
q.put(2)
q.put(3)

# 通过get()实现出队操作
item = q.get()  # 出队并返回队列中的元素
print(item)  # 输出 1

下面给出的示例则展示了如何通过列表模拟队列

queue = []

# 入队操作
queue.append("Tom")
queue.append("Jerry")
queue.append("Mike")

# 出队操作
removed_person = queue.pop(0)  # 弹出并返回队列中的第一个元素

# 判断队列是否为空:
if not queue:
        print("队列为空")
else:
      print(f"队头元素: {queue[0]}")

三、栈是什么

        栈是一种遵循后进先出(LIFO)原则的数据结构。在这种结构中,所有的添加(插入)和移除(删除)操作都发生在同一侧,这一侧被称为栈顶。相对的,另一侧则是栈底,通常不直接用于操作。当一个元素被添加到栈顶时,它成为了最上面的元素,而要移除元素时,也是从栈顶开始,移除最上面的那个元素。因此,最后被添加的元素会是第一个被移除的。

        如果一个栈没有任何元素,我们称之为空栈。在计算机科学中,栈常用于管理程序执行过程中的临时存储,如函数调用的局部变量和返回地址。栈的这种特性使得它在递归算法、表达式求值和任务回溯等场景中非常有用。

四、栈的操作

        在Python中,列表、字符串、元组等容器类型在进行布尔值判断时,遵循特定的规则。当这些容器为空(即它们不包含任何元素)时,它们在布尔上下文中被视为`False`。相反,当它们包含至少一个元素时,它们被视为`True`。

        例如,对于一个列表`stack`,你可以使用`not`运算符来检查它是否为空。如果`stack`是空的,`not stack`的结果是`True`,这表明列表确实是空的。如果`stack`包含元素,那么`not stack`的结果是`False`,这表示列表不是空的。这种特性使得`not`运算符成为检查容器是否为空的便捷方式。

在Python中,虽然标准库没有直接提供一个专门的栈类,但栈的行为可以通过列表(list)来模拟。以下是栈的基本操作及其在Python列表中的对应方法:

  1.  确定栈的大小:要了解栈中有多少个元素,可以通过调用`len()`函数来获取列表的长度,这代表了栈中元素的数目。
  2. 压栈操作:向栈中添加元素,即执行压栈操作,可以通过`append()`方法将新元素添加到列表的末尾,这样新元素就成为了栈顶元素。
  3. 弹栈操作:从栈中移除元素,即执行弹栈操作,可以通过`pop()`方法移除列表的最后一个元素,也就是栈顶元素。
  4. 查看栈顶元素:获取栈顶元素,即列表中的最后一个元素,可以通过索引`-1`来访问,例如`list[-1]`。
  5.  检查栈是否为空:要判断栈是否为空,可以通过检查列表是否包含元素,使用`if not stack`语句来进行判断。

通过这些操作,你可以在Python中有效地使用列表来模拟栈的行为,进行后进先出的数据管理。

stack = []  # 创建一个空栈

# 入栈
stack.append(1)
stack.append(2)
stack.append(3)

# 出栈
top_element = stack.pop()  # 弹出并返回栈顶元素
print(top_element)  # 输出 3

# 判断栈是否为空
if not stack:

总结

本次主要对栈和队列进行介绍

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值