堆栈迭代python3

时间:2013-02-04 20:16:34

标签: python list python-3.x iterator stack

好的,所以即时尝试在堆栈中输入一个单词,我想在输入字符串后打印所有这些单词。所以我一次只能打印一张。我尝试在外部使用for循环,但Stacks显然不可迭代。所以我在堆栈内迭代它。它仍然无法正常工作。

class Stack:

    def __init__(self):
        self.items = []
    def push(self,items):
        self.items.insert(0,items)
    def pop(self):
        for x in self.items:
            print( self.items.pop(0))

    def show(self):
        print (self.items)

s = Stack()
s.show()
placed = input("enter")

item = s.pop()
print(item, "is on top", s)

1 个答案:

答案 0 :(得分:0)

给你的Stack班级__len__ method,这样可以更容易地测试堆栈是否为空:

class Stack:
    def __init__(self):
        self.items = []

    def push(self,item):
        self.items.append(item)

    def pop(self):
        return self.items.pop()

    def show(self):
        print (self.items)

    def __len__(self):
        return len(self.items)

stack = Stack()

stack.push('World!')
stack.push('Hello')

while stack:  # tests the length through __len__
    print(stack.pop())

请注意,我只是.append().items列表的末尾,然后再次.pop()(无参数),从列表的末尾删除。

要制作课程an iterable type,您需要至少添加__iter__ method,可选择添加.__next__() method

class Stack:
    # rest elided

    def __iter__(self):
        return self

    def next(self):
        try:
            return self.items.pop()
        except IndexError:  # empty
            raise StopIteration  # signal iterator is done