Maxwell1130 发表于 2021-12-1 16:07:42

小甲鱼课后第039讲课后题求助

我在做课后作业的时候遇到了一些问题,请各位鱼油赐教^_^!

1. 定义一个栈(Stack)类,用于模拟一种具有后进先出(LIFO)特性的数据结构。至少需要有以下方法:

我的问题:__init__方法里面的start=[]的意义在哪里呢?如果要传递进去一个列表,那应该是def __init__(self,start),调用Stack类的时候Stack(start=)
答案这样给start赋初值是有什么原理在里面吗?{:5_94:}



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

傻眼貓咪 发表于 2021-12-1 17:44:07

其实都可以,主要是要实现定义一个栈(Stack)类,用于模拟一种具有后进先出(LIFO)特性的数据结构。

lightninng 发表于 2021-12-1 18:46:51

这应该属于函数部分的基础知识了,在函数定义的部分,直接在参数定义的地方给参数赋值的意思是设定一个默认值,调用该函数时,若未传入该参数,则这个参数使用默认值
也就是说,我在实例化一个Stack类时,可以不传入start参数,这时候,start参数就是默认的空列表
页: [1]
查看完整版本: 小甲鱼课后第039讲课后题求助