鱼C论坛

 找回密码
 立即注册
查看: 1204|回复: 4

[已解决]球球了 self.stack = [] 这里用来干嘛的

[复制链接]
发表于 2021-8-2 15:57:43 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
class Stack:
    def __init__(self, start=[]):
        self.stack = []
        for x in start:
            self.push(x)

    def isEmpty(self):
        return not self.stack
   
    def push(self, obj):
        self.stack.append(obj)

    def pop(self):
        if not self.stack:
            print('警告:栈为空!')
        else:
            return self.stack.pop()

    def top(self):
        if not self.stack:
            print('警告:栈为空!')
        else:
            return self.stack[-1]

    def bottom(self):
        if not self.stack:
            print('警告:栈为空!')
        else:
            return self.stack[0]
红字部分用来干嘛的
最佳答案
2021-8-3 16:16:10
本帖最后由 nahongyan1997 于 2021-8-3 16:18 编辑

看代码: (满意设置个最佳呦,阿里嘎都)
  1. # 这个类其实就是为了模拟栈的运行方式而编写的,并没有什么实际性的作用
  2. class Stack:
  3.     def __init__(self, start=[]):
  4.         # 这个属性就是栈本身,虽然在python中他并没有内存空间的限制
  5.         self.stack = []
  6.         
  7.         # 模拟栈的运行方式将实例化类时传入的参数一个一个的压入(push)栈(self.stack)中,在实际使用中与 self.stack = start 作用是相同的
  8.         for x in start:
  9.             self.push(x)

  10.     def isEmpty(self):
  11.         return not self.stack
  12.    
  13.     def push(self, obj):
  14.         self.stack.append(obj)
  15.    
  16.     # 弹栈操作(pop)
  17.     def pop(self):
  18.         if not self.stack:
  19.             print('警告:栈为空!')
  20.         else:
  21.             return self.stack.pop()

  22.     def top(self):
  23.         if not self.stack:
  24.             print('警告:栈为空!')
  25.         else:
  26.             return self.stack[-1]

  27.     def bottom(self):
  28.         if not self.stack:
  29.             print('警告:栈为空!')
  30.         else:
  31.             return self.stack[0]
  32.         

复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-8-2 20:47:59 | 显示全部楼层
循环输入的列表,逐个加入到栈中。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-8-3 16:16:10 | 显示全部楼层    本楼为最佳答案   
本帖最后由 nahongyan1997 于 2021-8-3 16:18 编辑

看代码: (满意设置个最佳呦,阿里嘎都)
  1. # 这个类其实就是为了模拟栈的运行方式而编写的,并没有什么实际性的作用
  2. class Stack:
  3.     def __init__(self, start=[]):
  4.         # 这个属性就是栈本身,虽然在python中他并没有内存空间的限制
  5.         self.stack = []
  6.         
  7.         # 模拟栈的运行方式将实例化类时传入的参数一个一个的压入(push)栈(self.stack)中,在实际使用中与 self.stack = start 作用是相同的
  8.         for x in start:
  9.             self.push(x)

  10.     def isEmpty(self):
  11.         return not self.stack
  12.    
  13.     def push(self, obj):
  14.         self.stack.append(obj)
  15.    
  16.     # 弹栈操作(pop)
  17.     def pop(self):
  18.         if not self.stack:
  19.             print('警告:栈为空!')
  20.         else:
  21.             return self.stack.pop()

  22.     def top(self):
  23.         if not self.stack:
  24.             print('警告:栈为空!')
  25.         else:
  26.             return self.stack[-1]

  27.     def bottom(self):
  28.         if not self.stack:
  29.             print('警告:栈为空!')
  30.         else:
  31.             return self.stack[0]
  32.         

复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-8-4 14:29:44 | 显示全部楼层
本帖最后由 bravsheng 于 2021-8-4 14:31 编辑
nahongyan1997 发表于 2021-8-3 16:16
看代码: (满意设置个最佳呦,阿里嘎都)


噢,明白了!   原来是为了模拟栈的运行方式才这么写的!
你的回答解决我的疑惑!  我也刚发帖询问,真巧又看到这篇贴子。
(我一开始想到是 self.stack = start,但看了答案循环压入的操作有些不理解了。)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-8-4 15:59:47 | 显示全部楼层
bravsheng 发表于 2021-8-4 14:29
噢,明白了!   原来是为了模拟栈的运行方式才这么写的!
你的回答解决我的疑惑!  我也刚发帖询问, ...

满意给个最佳欧
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-27 09:00

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表