You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何不使用.pop方法实现Stack类的stack_pop方法?

不使用pop()方法实现栈的出栈功能

你的代码核心逻辑没问题,只需要替换掉pop()方法的使用即可。这里提供两种简单可行的实现方案:

方案一:用del语句删除栈顶元素

class Stack:
    def __init__(self):
        self.a_list = []
   
    def stack_push(self, num):
        self.a_list.append(num)
        
    def stack_pop(self):
        # 先判断栈是否为空,空栈返回None
        if not self.a_list:
            return None
        # 获取栈顶元素(列表最后一个元素)
        top_item = self.a_list[-1]
        # 删除列表最后一个元素(栈顶)
        del self.a_list[-1]
        return top_item

方案二:通过切片重新赋值列表

class Stack:
    def __init__(self):
        self.a_list = []
   
    def stack_push(self, num):
        self.a_list.append(num)
        
    def stack_pop(self):
        if not self.a_list:
            return None
        top_item = self.a_list[-1]
        # 用切片生成去掉最后一个元素的新列表,重新赋值
        self.a_list = self.a_list[:-1]
        return top_item

关键逻辑说明

  • 空栈判断:必须先检查列表是否为空,避免直接取索引[-1]时触发越界错误。
  • 获取栈顶元素:栈遵循后进先出规则,栈顶对应列表的最后一个元素,用self.a_list[-1]可以直接定位。
  • 移除栈顶元素:
    • del self.a_list[-1]是Python原生的删除指定索引元素的方法,直接修改原列表。
    • 切片self.a_list[:-1]会生成一个不含最后一个元素的新列表,重新赋值后等价于移除了栈顶元素。

用你的示例测试代码运行,两种方案都能依次输出3、2、1,完全符合要求。

内容的提问来源于stack exchange,提问作者H20zzz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 12:25:30