在python中工作3.假设我已经为一个对象My_Object创建了一个类。 My_Object有一个变量,它是一个数字列表。它还有一个功能,允许您从对象中的列表中删除数字。
现在我创建一个包含多个My_Objects的列表,其中一些列表已清空,另一些列表中仍有一些数字。我如何从my_list中删除其对象在列表中没有值的任何对象?
所以在下面的例子中,我想从my_list中删除x,因为x有一个空列表,同时在my_list中保留y和z,以便打印my_list会产生 - [2,3] [1,2,3]而不是[] [2,3] [1,2,3]
试图自己搞清楚,但似乎无法弄清楚如何根据内容从列表中完全删除对象。
class My_Object:
def __init__(self):
self.a = [1, 2, 3]
def __str__(self):
return '{}'.format(self.a)
def remove_item(self, item):
self.a.remove(item)
x = My_Object()
y = My_Object()
z = My_Object()
my_list = [x, y, z]
x.remove_item(1)
x.remove_item(2)
x.remove_item(3)
y.remove_item(1)
print(*my_list)
答案 0 :(得分:1)
在发布后不久就想出来了。这似乎让我得到了我想要的东西:
my_list = [x for x in my_list if x.a != []]
答案 1 :(得分:0)
要删除代码中包含空列表的任何对象,这是一个简单的算法
这里有一个简单的代码
# go through each element
for obj in my_list :
# check if its list empty
if len(obj.a) == 0 :
# if true remove it
my_list.remove(obj)
print(my_list)
答案 2 :(得分:-1)
使用list comps
my_list = [x for x in my_list if x]
或变得愚蠢
my_list = [*filter(bool, my_list)]
答案 3 :(得分:-1)
您可以按列表的值或列表中的索引从列表中删除项目。下面是我演示的代码,即从列表中删除项目的值及其索引
class My_Object:
def __init__(self):
self.a = [1, 2, 3]
def __str__(self):
return '{}'.format(self.a)
def remove_item(self, item):
self.a.remove(item)
x = My_Object()
y = My_Object()
z = My_Object()
my_list = [x, y, z]
# If you want to remove object from list by its value than
my_list.remove(y) # This will remove y object from my_list
# Now my_list has two elements in it which are [x, z]
# If you want to remove object from list by its value than
my_list.pop(0) # This will remove x object from my_list
# Now my_list has one element in it which is[z]
如果您不知道对象的值,则无法通过其值删除它,因此您可以执行的操作是您可以遍历列表并搜索对象的特定属性,如果匹配该属性而不是简单地通过pop()