在Python中创建堆栈列表



因此,我正在尝试在Python中创建堆栈对象列表。我首先创建了一个具有简单方法的类堆栈,该方法应具有的简单方法。然后,我创建了另一个称为堆栈的类。我正在尝试创建堆栈列表。如果堆栈具有3个以上的元素,它会创建一个新的堆栈,但是当我尝试显示元素时,我会出现错误。有人可以指出我在这里做错了什么吗?

class Stack:
    def __init__(self):
        self.items =  []
    def isEmpty(self):
        return self.items == []
    def push(self, item):
        self.items.append(item)
    def pop(self):
        return self.items.pop()
    def size(self):
        return len(self.items)
    def printStack(self):
        for item in reversed(self.items):
            print (item)

class Stacks:
    def __init__(self):
        self.stacks = []
        self.noOfStacks = 0
        self.itemsOnStack = 0
    def dev(self):
        self.stacks.append(Stack())
        # if len(self.stacks) != 0:
        #     self.noOfStacks += 1
    def push(self, item):
        if self.itemsOnStack > 3:
            self.dev()
        else:
            self.itemsOnStack += 1
            self.stacks[self.noOfStacks].push(item)
    def pop(self, stackNo):
        return self.stacks(noOfStacks).pop()
    def size(self):
        return len(self.stacks)
    def printtack(self, index):
        print (len(self.stacks(index)))
        self.stacks(index).printStack()

stacky = Stacks()
stacky.dev()
stacky.push(3)
stacky.printtack(0)

python中的索引列表由[] not()工作。尝试

 def printtack(self, index):
    self.stacks[index].printStack()

要注意的一件事,因为kshikama说应该使用 []而不是 ()进行索引,另一个问题是在stack类中使用 len()方法,u __len__()方法或像你给出的那样,使用size()方法

class Stack:
    def __init__(self):
        self.items =  []
    def isEmpty(self):
        return self.items == []
    def push(self, item):
        self.items.append(item)
    def pop(self):
        return self.items.pop()
    def size(self):
        return len(self.items)
    def printStack(self):
        for item in reversed(self.items):
            print (item)
class Stacks:
    def __init__(self):
        self.stacks = []
        self.noOfStacks = 0
        self.itemsOnStack = 0
    def dev(self):
        self.stacks.append(Stack())
        #if len(self.stacks) != 0:
            #self.noOfStacks += 1
    def push(self, item):
        if self.itemsOnStack > 3:
            self.dev()
        else:
            self.itemsOnStack += 1
            self.stacks[self.noOfStacks].push(item)

    def pop(self, stackNo):
        return self.stacks(noOfStacks).pop()
    def size(self):
        return len(self.stacks)
    def printtack(self, index):
        print (self.stacks[index].size())
        self.stacks[index].printStack()
stacky = Stacks()
stacky.dev()
stacky.push(3)
stacky.printtack(0)

输出

1
3

最新更新