Уведомления

Группа в Telegram: @pythonsu

#1 Дек. 12, 2009 00:07:58

Эксперементатор
От:
Зарегистрирован: 2009-08-14
Сообщения: 29
Репутация: +  0  -
Профиль   Отправить e-mail  

Удаление объекта из списка

Всем доброго времени суток! :) Потребовалось мне создать список объектов, да ещё в придачу иметь в каждом из этих объектов метод, который при определённом условии удаляет объект из этого списка. То есть как-то так:

class A():
...
def Method(self):
if self.a>b: Delete
...

al=[A() for x in xrange(10)]
...
for ax in a: ax.Method()
И на последней строчке какая-то часть объектов из списка удаляется… Подскажите, плиз, как это реализуется, т.е. что должно быть на месте Delete, чтоб это работало, а то чтой-то я похоже туплю… :(
Заранее благодарю.



Офлайн

#2 Дек. 12, 2009 02:02:55

denz
От:
Зарегистрирован: 2007-01-09
Сообщения: 117
Репутация: +  0  -
Профиль   Отправить e-mail  

Удаление объекта из списка

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)’ стоит подцепить генератор.



Отредактировано (Дек. 12, 2009 02:20:20)

Офлайн

#3 Дек. 12, 2009 09:39:04

Rodegast
От: Пятигорск
Зарегистрирован: 2007-12-28
Сообщения: 2742
Репутация: +  183  -
Профиль   Отправить e-mail  

Удаление объекта из списка

del s Удаляет элемент последовательности, на который указывает индекс i.

del s[:] Удаляет из последовательности элементы, входящие в срез (эквивалентно ‘s = ’).



С дураками и сектантами не спорю, истину не ищу.
Ели кому-то правда не нравится, то заранее извиняюсь.

Отредактировано (Дек. 12, 2009 09:41:27)

Офлайн

#4 Дек. 12, 2009 16:21:00

Эксперементатор
От:
Зарегистрирован: 2009-08-14
Сообщения: 29
Репутация: +  0  -
Профиль   Отправить e-mail  

Удаление объекта из списка

denz, спасибо! :)



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version