Python 3.x 使用2个堆栈创建队列

Python 3.x 使用2个堆栈创建队列,python-3.x,algorithm,data-structures,Python 3.x,Algorithm,Data Structures,有人能帮我理解这个问题吗?我真的不明白如果不是self.outback怎么在这里工作。我认为self.outstack以空列表开始,为什么它会触发此语句?我也不明白这里的self.instack,self.instack是我们从排队函数中附加的列表,对吗?什么能打破while循环?更好地理解循环结构可能有助于编写这段代码。 这里有一个资源: 类似于: if not (apples >= 5): print("You have a few apples only.") if

有人能帮我理解这个问题吗?我真的不明白如果不是self.outback怎么在这里工作。我认为self.outstack以空列表开始,为什么它会触发此语句?我也不明白这里的self.instack,self.instack是我们从排队函数中附加的列表,对吗?什么能打破while循环?

更好地理解循环结构可能有助于编写这段代码。 这里有一个资源:

类似于:

  if not (apples >= 5): 
     print("You have a few apples only.")

if(apples您所指的
if
条件:

  if (apples <= 5):
     print("You have a few apples only.") 
…表示“如果分批为空”。这是必要的,因为预期的操作是从该堆栈中弹出一个值(请参见
return
语句)。现在,如果没有任何值,我们不能只引发异常“抱歉,没有更多值”,因为另一个堆栈中可能仍有值:
instack
。因此,在这种情况下,我们需要从该堆栈返回一个值:我们需要返回的值位于
instack
的底部。因此,我们需要弹出该堆栈中的所有值,并将它们附加到
outstack
,这将有效地将它们按相反顺序排列:t位于
instack
底部的值将最终位于
outstack
的顶部,这正是我们想要的,因为我们将弹出该元素作为返回值

while
条件是:“while在
instack
中仍有值”。这是必需的,因为我们希望从该堆栈中弹出所有值

  if (apples <= 5):
     print("You have a few apples only.") 
if not self.outstack: