我正在做一些基本的Python编程练习练习,并试图实现一个队列(使用列表)。不幸的是,我正在为我的isempty()函数获取我不理解的行为。运行下面的代码时,最后两行给出不同的答案:A产生False,而B产生True。为什么A也没有产生假?
class Queue:
def __init__(self):
self.items = []
def push(self,item):
self.items.insert(0,item)
def pop(self):
return self.items.pop()
def size(self):
return len(self.items)
def isempty(self):
return self.size == 0
q = Queue()
q.push("a")
q.push("b")
print(q.pop())
print(q.isempty())
print(q.pop())
print(q.isempty()) # shouldn't this (A)...
print(q.size()==0) # ...and this (B) yield the same answer?
答案 0 :(得分:3)
只需将isempty()
方法更改为:
def isempty(self):
return self.size() == 0
答案 1 :(得分:0)
Queue.isempty()
的实施正在检查方法size
是否等于整数0
,这将永远不会成立。
class Queue:
def __init__(self):
self.items = []
def push(self,item):
self.items.insert(0,item)
def pop(self):
return self.items.pop()
def size(self):
return len(self.items)
def isempty(self):
return self.size == 0
q = Queue()
print(q.size)
制作:
<< __ main __的绑定方法Queue.size。位于0x02F4EA10的队列对象>>
最简单的解决方案是使用Christopher Shroba的建议来修改您的Queue.isempty()
实现,以使用列表的大小方法。