在python中将一个堆栈推送到另一个堆栈

2024-04-26 11:48:02 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试将堆栈A的内容推送到堆栈B。同时,我希望保持两个堆栈的顺序。为此,我想使用堆栈C。我尝试在以下函数中执行此操作:

class Stack:
    ...

    def pop(self):
        self.items.pop()
        self.topindex -= 1
        return self

    def some_func(A, B, C):
        for item in A.items:
            while A.topindex is not 0:
                A.push(A.pop(item), C)
        for items in C.items:
            while C.topindex is not 0:
                C.push(C.pop(item), B)
    ...

topindex是堆栈中最后一项的索引。 如果堆栈中有2个项,则topindex将为2。在

但是,执行时会抛出一个错误: TypeError:pop()接受1个位置参数,但给出了2个

我也试着用这篇文章(Push a stack onto another stack)寻求帮助,但这对我也没用,主要是因为我对c一无所知。在


Tags: inself内容forisstack堆栈def
1条回答
网友
1楼 · 发布于 2024-04-26 11:48:02

您没有提供完整的堆栈实现供我使用,但是Python的list类型已经有一个pop方法,所以您可以像使用堆栈一样使用它们。在

>>> a = [1,2,3]
>>> b = []
>>> c = []
>>> while a:
    c.append(a.pop())


>>> c
[3, 2, 1]
>>> while c:
    b.append(c.pop())


>>> b
[1, 2, 3]
>>> a
[]
>>> c
[]

有一些更简单的方法来操作列表,但是上面介绍了如何只使用push(append)/pop来移动堆栈的元素。在

您的堆栈实现应该有一个等价的.append()和{},并有某种方法来判断它是否为空以结束while循环。在

相关问题 更多 >