在 python 中实现不可变堆栈
implementing immutable stack in python
对使用 python 中的现有对象创建新对象有疑问。示例:我想使用 python 实现不可变堆栈。但是,这里要注意的是,每当我创建新对象时,它都应该从现有对象创建:
在下面的示例中,我如何更新推送功能以从 s0
创建 s1
的副本并将值 2
附加到 S1
?
class Stack:
def __init__(self):
self.items = []
def push(self, item):
self.items.append(item)
def pop(self):
return self.items.pop()
def peek(self):
return self.items[-1]
def __str__(self):
return str(self.items)
if __name__ == "__main__":
s0 = Stack()
s1 = s0.push(2)
s2 = s1.push(3)
您只需要一种方法来使用现有 items
.
的副本创建新的 Stack
对象
def __init__(self, contents=[]):
self.items = contents
def push(self, item):
new_stack = Stack(self.items[:]]
new_stack.items.append(item)
return new_stack
对使用 python 中的现有对象创建新对象有疑问。示例:我想使用 python 实现不可变堆栈。但是,这里要注意的是,每当我创建新对象时,它都应该从现有对象创建:
在下面的示例中,我如何更新推送功能以从 s0
创建 s1
的副本并将值 2
附加到 S1
?
class Stack:
def __init__(self):
self.items = []
def push(self, item):
self.items.append(item)
def pop(self):
return self.items.pop()
def peek(self):
return self.items[-1]
def __str__(self):
return str(self.items)
if __name__ == "__main__":
s0 = Stack()
s1 = s0.push(2)
s2 = s1.push(3)
您只需要一种方法来使用现有 items
.
Stack
对象
def __init__(self, contents=[]):
self.items = contents
def push(self, item):
new_stack = Stack(self.items[:]]
new_stack.items.append(item)
return new_stack