|
|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
零基础学python,39讲的课后动动手第二题,先上题目:
标准答案的代码如下:
我的问题是:
1.第二行定义方法的时候,括号里定义一个start = [],是否有必要?因为第三行直接定义栈 self.stack = [] 了啊,有必要定义一个开始(start)么?
2.即使这样先定义了一个start = [],这里面不是一个空列表么,那么第四行的for循环,还有意义么?start里没有任何值啊。。。
求大佬答疑解惑。。。。
- 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]
复制代码
1.第二行定义方法的时候,括号里定义一个start = [],是否有必要?因为第三行直接定义栈 self.stack = [] 了啊,有必要定义一个开始(start)么?
这个stack是实例化对象的stack属性,作为栈来存放数据,这样写是为了可以在初始化实例对象的时候就可以用一个可迭代对象进行初始化
2.即使这样先定义了一个start = [],这里面不是一个空列表么,那么第四行的for循环,还有意义么?start里没有任何值啊。。。
就是将初始化传入的可迭代对象的元素填充到实例化对象的属性stack列表中
|
|