python 39课习题,求详解,
class Stack:def __init__(self, start=[]):
self.stack = []#此处为什么不这样,self.stack=start,这样就省去了下面两句
for x in start:#此处的start列表是形参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-3-10 10:36 编辑
start是列表
字典,列表,集合都是不可哈希数据
如果按照你的想法进行修改,更改外部变量start
生成的实例会随着start的变化而变化,有时候会引发出乎我们意料的bug
class Stack:
def __init__(self, start=[]):
self.stack=start
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
>>> start = []
>>> a = Stack(start)
>>> a.stack
[]
>>> start.append(1)
>>> a.stack
>>>
使用迭代赋值的方法,生成的实例不会随着start的变化而变化
>>> start = []
>>> a = Stack(start)
>>> a.stack
[]
>>> start.append(1)
>>> a.stack
[]
页:
[1]