39讲课后题用类模拟栈
class Stack:def __init__(self,start=[]):
#能否直接用self.stack=start ?
self.stack=[]
for x in start:
self.push(x)
def isEmpty(self):
return not self.stack
def push(self,x):
self.stack.append(x)
def pop(self):
self.stack.pop()
def top(self):
print(self.stack[-1])
def bottom(self):
print(self.stack)
想问下各位如果用self.stack=start 会有什么后患吗 不可以用self.stack=start 。因为这样写的话,stack和start 是同一个列表,若start被修改了那么栈也被修改了
举个例子
class Stack:
def __init__(self,start=[]):
self.stack=start
def isEmpty(self):
return not self.stack
def push(self,x):
self.stack.append(x)
def pop(self):
self.stack.pop()
def top(self):
print(self.stack[-1])
def bottom(self):
print(self.stack)
list1=
a=Stack(list1)
a.top()#这里得到的是4
list1.pop()
a.top()#这里得到的是3
但是可以用self.stack=start[:]
sunrise085 发表于 2020-9-8 20:31
不可以用self.stack=start 。因为这样写的话,stack和start 是同一个列表,若start被修改了那么栈也被修 ...
感谢 我片面了
页:
[1]