在 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.")
首先,它会接受用户的输入。其次,在给出输入后,它会检查给定的输入。最后,在检查过程完成后,它会向用户提供一条消息(如果给定的输入是否为空,将显示一条消息?无论是什么情况)。
我看过几个关于如何检查列表是否为空的答案,但没有找到我需要的答案。 很快 - 在 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.")
首先,它会接受用户的输入。其次,在给出输入后,它会检查给定的输入。最后,在检查过程完成后,它会向用户提供一条消息(如果给定的输入是否为空,将显示一条消息?无论是什么情况)。