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

in python, how to check if list is not empty, and empty it if so?

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

我通过调用 class - Packet()

来定义列表
class Packet(object):
"""description of class"""
    def __init__(self):
        self.newPacket = []
newPacket = Packet()

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

if newPacket:
    del newPacket
newPacket.MakePacket()

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

if newPacket:
    del newPacket

该功能运行良好。

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

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

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

class Packet(object):

    # ...

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

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

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

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

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