我已经看到了几个关于如何检查列表是否为空的答案,但没有找到我需要的东西。 很快 - 在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
功能正常。
答案 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.")
首先,它将接受用户的输入。其次,在输入之后,将检查给定的输入。最后,在检查过程完成之后,它将向用户提供一个味精(如果给定的输入为空,则将显示味精?无论哪种情况)。