|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
- 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[0])
复制代码
想问下各位如果用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[0])
- list1=[1,2,3,4]
- a=Stack(list1)
- a.top() #这里得到的是4
- list1.pop()
- a.top() #这里得到的是3
复制代码
但是可以用self.stack=start[:]
|
|