-1

我已经看到了几个关于如何检查列表是否为空的答案,但没有找到我需要的东西。很快-在python中,我需要一种方法来检查列表是否已满,然后将其清空,但我需要在我填充列表后立即开始检查。

我通过调用我的类来定义列表 - Packet()

class Packet(object):
"""description of class"""
    def __init__(self):
        self.newPacket = []
newPacket = Packet()

我有菜单,其中一个选项是调用类中的函数来填充列表。但是,如果再次选择该函数,我需要清空实例,然后开始一个新实例。我试过这样做:

if newPacket:
    del newPacket
newPacket.MakePacket()

但这不让我通过调用函数来启动列表..如果我禁用

if newPacket:
    del newPacket

该功能工作得很好。

4

2 回答 2

1
values = input("Enter a list (U CAN ALSO CREATE AN EMPTY LIST. IF YOU WANT THEN SIMPLY PRESS 'ENTER'). If not then write e.g. ABC or 1, 2 or 2019 to insert: ")
list = list(values)
if list == []:
    print("Your list", list, "is an empty list!")
else:
    print("Your list", list, "is not an empty list.")

首先,它将接受用户的输入。其次,在给出输入后,它会检查给定的输入。最后,在检查过程完成后,它会给用户一个消息(如果给定的输入为空,将显示一个消息?无论场景是什么)。

于 2019-02-20T08:41:22.210 回答
1

您似乎混淆了Packet您创建并选择命名的特定实例newPacket及其同名属性。而不是删除实例,甚至删除列表,听起来你想清空列表。因为你给了两个不同的东西同名,现在可以从你的命令行访问有问题的列表 as newPacket.newPacket(尽管对象本身喜欢在它自己的方法中引用它, as self.newPacket)。

所以。当您 时,您将从当前工作区del newPacket中删除对对象的引用。如果您尝试对该符号执行任何操作,newPacket解释器将引发 a ,例如- 因为该变量不再存在于当前工作区中。NameErrornewPacket.MakePacket()

如果你想实现Packet计算self.newPacket列表属性中项目的方法,或者清空它,你可以说:

class Packet(object):

    # ...

    def count( self ):
        return len( self.newPacket )

    def clear( self ):
        del self.newPacket[:]

这顺便说明了一种清空列表的方法,同时保留对现在为空的列表的引用: del myList[:]

于 2016-01-05T21:52:00.733 回答