Найти - Пользователи
Полная версия: Удаление объекта из списка
Начало » Python для новичков » Удаление объекта из списка
1
Эксперементатор
Всем доброго времени суток! :) Потребовалось мне создать список объектов, да ещё в придачу иметь в каждом из этих объектов метод, который при определённом условии удаляет объект из этого списка. То есть как-то так:
class A():
...
def Method(self):
if self.a>b: Delete
...

al=[A() for x in xrange(10)]
...
for ax in a: ax.Method()
И на последней строчке какая-то часть объектов из списка удаляется… Подскажите, плиз, как это реализуется, т.е. что должно быть на месте Delete, чтоб это работало, а то чтой-то я похоже туплю… :(
Заранее благодарю.
denz
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))
З.Ы. Если длина списка имеет склонность упираться в бесконечность - вместо ‘filter(lambda a:a.needs_remove,lst)’ стоит подцепить генератор.
Rodegast
del s Удаляет элемент последовательности, на который указывает индекс i.

del s[:] Удаляет из последовательности элементы, входящие в срез (эквивалентно ‘s = ’).
Эксперементатор
denz, спасибо! :)
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB