【问题标题】:Nested list in class类中的嵌套列表
【发布时间】:2018-04-22 16:08:09
【问题描述】:

我试图创建一个 BookStack() 类,我希望用户将书号和名称作为列表输入,它将被附加到已经创建的列表中,从而形成一个嵌套列表。 我的代码如下:

class BookStack():
    def __init__(self):
        self.books=[]

    def push(self,books):
        self.books.append(books)
        print self.books

    def pop(self):
        self.books.pop()

    def __str__(self):
        for i in self.books:
            print i,'\n'

def main():
    while 1:
        print "             1. Enter Book Credentials"
        print "     2. Remove the most recent book from database"
        print "                3. Print Database"

        choice=int(raw_input("Enter Choice: "))
        if(choice==1):
            book=BookStack()
            BookNumName=input("Enter Book Name & Number as [Number,Name]: ")
            book.push(BookNumName)
        elif(choice==2):
            book.pop()
        elif(choice==3):
            book.__str__()
        proceed=raw_input("Do you want to enter more(Y/N)?: ")
        if(proceed!='y' and proceed!='Y'):
            break

if __name__=='__main__':
    main()

但是如果我输入一个类似 [1,'A'] , [2,'B'] , [3,'C'] 的列表,输出是

[[3, 'C']]

我想要的输出:

[[1,'A'],[2,'B'],[3, 'C']]    

【问题讨论】:

    标签: python list class append nested-lists


    【解决方案1】:

    您需要将以下内容移出循环:

    book=BookStack()
    

    相反,在进入循环之前执行一次。

    您只想创建一个BookStack。之后,只需push 新书就可以了。如果你重新创建它,你会看到一个空的BookStack

    【讨论】:

    • 非常感谢,汤姆 :)
    猜你喜欢
    • 2017-05-25
    • 2017-02-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-06
    • 2022-11-16
    相关资源
    最近更新 更多