Форум сайта python.su
Всем доброго времени суток! :) Потребовалось мне создать список объектов, да ещё в придачу иметь в каждом из этих объектов метод, который при определённом условии удаляет объект из этого списка. То есть как-то так:
class A():
...
def Method(self):
if self.a>b: Delete
...
al=[A() for x in xrange(10)]
...
for ax in a: ax.Method()
Офлайн
import random
class A(object):
def __init__(self):
self.a = random.choice(range(6))
self.b = random.choice(range(6))
@property
def needs_remove(self):
return self.a >= self.b
def __unicode__(self):
return "%s:%s:%s"%(self.a,self.b,self.needs_remove)
if __name__=="__main__":
lst = []
for i in xrange(10):
lst += A(),
print "\n".join(map(lambda i:unicode(i),lst))
print 20*"-"
for needs_remove in filter(lambda a:a.needs_remove,lst):
lst.remove(needs_remove)
print "\n".join(map(lambda i:unicode(i),lst))
Отредактировано (Дек. 12, 2009 02:20:20)
Офлайн
del s Удаляет элемент последовательности, на который указывает индекс i.
del s[:] Удаляет из последовательности элементы, входящие в срез (эквивалентно ‘s = ’).
Отредактировано (Дек. 12, 2009 09:41:27)
Онлайн
denz, спасибо! :)
Офлайн