在python中,如何检查列表是否为空,如果是,则将其清空?

时间:2016-01-05 21:39:52

标签: python list empty-list

我已经看到了几个关于如何检查列表是否为空的答案,但没有找到我需要的东西。 很快 - 在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

功能正常。

2 个答案:

答案 0 :(得分:1)

您似乎混淆了您创建并选择命名Packet的特定newPacket实例,其实例具有相同的名称。而不是删除实例,甚至删除列表,听起来你想要清空列表。因为您已经给出了两个相同名称的不同内容,所以现在可以从命令行中将newPacket.newPacket作为列表访问(尽管对象本身喜欢在其自己的方法中引用它,因为self.newPacket)。

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

如果您想实施计算Packet列表属性中的项目的self.newPacket方法,或将其清空,您可以说:

class Packet(object):

    # ...

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

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

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

答案 1 :(得分:0)

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.")

首先,它将接受用户的输入。其次,在输入之后,将检查给定的输入。最后,在检查过程完成之后,它将向用户提供一个味精(如果给定的输入为空,则将显示味精?无论哪种情况)。