在python中创建堆栈列表

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在python中创建堆栈列表相关的知识,希望对你有一定的参考价值。

所以我试图在Python中创建一个堆栈对象列表。我首先创建了一个类Stack,它具有Stack应该具有的简单方法。然后我创建了另一个名为Stacks的类。我正在尝试创建堆栈列表。如果一个堆栈有超过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)
答案

有一点需要注意,因为kshikama说索引应该使用[]而不是(),另一个问题是在堆栈类中使用len()方法你最重写__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)

OUTPUT

1
3
另一答案

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

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

以上是关于在python中创建堆栈列表的主要内容,如果未能解决你的问题,请参考以下文章

在片段中创建自定义列表视图时出错所需活动,找到片段

在片段android中创建listview

如何膨胀由 Android Studio 向导在 Activity 中创建的片段(列表)?

Android App 在片段中创建 ListView 引用时关闭

在 Python 中创建一个空列表

在 Python 中创建具有初始容量的列表