【发布时间】:2013-11-19 08:57:37
【问题描述】:
我有两个来自同一类的汽车对象和一个汽车列表。
class Car:
def __init__(self):
pass
cars = []
car1 = Car()
car1.color = 'black'
cars.append(car1)
car2 = Car()
car2.engine = 'V8'
cars.append(car2)
我还有两个函数,用于在匹配时从cars 中删除对象。
def rm_car_color(c):
for car_n in cars:
try:
if car_n.color == c.color:
cars.remove(car_n)
except Exception, err:
pass
def rm_car_engine(c):
for car_n in cars:
try:
if car_n.engine == c.engine:
cars.remove(car_n)
except Exception, err:
pass
如您所见,它们实际上是相同的。我想要的是能够将要检查的成员传递给函数,以便我可以删除这两个函数之一,并且只有一个在 Python 2.6.6 中同时处理这两个函数。这可能吗?
此代码仅用于说明。我正在处理的代码有许多这样的删除函数(总共 8 个),如果可以的话,我会显着减少行数。
【问题讨论】:
-
另外,如果有人对这篇文章有更好的主题名称,请更改它。我很难找到一个好句子。
-
警告:在您迭代列表时从列表中删除对象可能会跳过一些项目!您可能想要创建一个新列表,而不是修改现有列表。
-
@Blckknght 或者遍历一个反向列表。
-
@SteinarLima:嘿,我正要编辑我的评论以提及反向迭代。