余晖~ 2022-02-27 20:17 采纳率: 90.3%
浏览 12
已结题

力扣简单题,用python列表模拟栈实现队列,答案有个地方不太理解,关于python的类和对象有什么好的教材吗

```
题目要实现的操作
使用栈实现队列的下列操作:

push(x) -- 将一个元素放入队列的尾部。
pop() -- 从队列首部移除元素。
peek() -- 返回队列首部的元素。
empty() -- 返回队列是否为空。

```###### 问题相关代码,请勿粘贴截图
class MyQueue:

def __init__(self):
    """
    in主要负责push,out主要负责pop
    """
    self.stack_in = []
    self.stack_out = []


def push(self, x: int) -> None:
    """
    有新元素进来,就往in里面push
    """
    self.stack_in.append(x)


def pop(self) -> int:
    """
    Removes the element from in front of queue and returns that element.
    """
    if self.empty():
        return None
    
    if self.stack_out:
        return self.stack_out.pop()
    else:
        for i in range(len(self.stack_in)):
            self.stack_out.append(self.stack_in.pop())
        return self.stack_out.pop()


def peek(self) -> int:
    """
    Get the front element.
    """
    ans = self.pop()    #就是这个地方,为什么是self.pop,而不是self.stack_out
    self.stack_out.append(ans)
    return ans


def empty(self) -> bool:
    """
    只要in或者out有元素,说明队列不为空
    """
    return not (self.stack_in or self.stack_out)
运行结果及报错内容
我的解答思路和尝试过的方法
我想要达到的结果
  • 写回答

0条回答 默认 最新

    报告相同问题?

    问题事件

    • 系统已结题 3月7日
    • 创建了问题 2月27日

    悬赏问题

    • ¥20 python忆阻器数字识别
    • ¥15 无法输出helloworld
    • ¥15 高通uboot 打印ubi init err 22
    • ¥20 PDF元数据中的XMP媒体管理属性
    • ¥15 R语言中lasso回归报错
    • ¥15 网站突然不能访问了,上午还好好的
    • ¥15 有没有dl可以帮弄”我去图书馆”秒选道具和积分
    • ¥15 semrush,SEO,内嵌网站,api
    • ¥15 Stata:为什么reghdfe后的因变量没有被发现识别啊
    • ¥15 振荡电路,ADS仿真