Уведомления

Группа в Telegram: @pythonsu

#1 Март 31, 2012 02:40:03

ambivalentno
Зарегистрирован: 2012-03-27
Сообщения: 1
Репутация: +  0  -
Профиль   Отправить e-mail  

итератор не мог создать

Пытаюсь описать нижеследующий кусок в виде итератора, и у меня не получается.

        pop_list = []
        for entity in list1: #как это описать с помощью итератора?
            for subentity in entity.list2:
                if subentity not in list1 and subentity.property:
                    pop_list.append(subentity)
то есть есть у меня список объектов (list1), из которых я получаю список list2. В list2 могут встречаться элементы list1, но в цели их быть не должно, чтоотбразил как “not in list1”
Долго не получалось. Я вроде как опустил руки и решил постить сие на python.su. Пытаюсь просто написать то, что делает цикл в квадратных скобках - и выходит!
pop_list = [subentity for entity in list1 for subentity in entity.list2  if subentity not in list1 and subentity.property]
Но все равно как-то писал, наверное стоит поделиться.

Офлайн

#2 Март 31, 2012 14:15:47

fata1ex
От:
Зарегистрирован: 2009-07-11
Сообщения: 732
Репутация: +  52  -
Профиль   Отправить e-mail  

итератор не мог создать

За что я люблю python, так это то, что абсолютно на любом уровне изучения он может радовать вас подобными вещами :)
Я вот, например, совсем недавно узнал о методе ‘mro’ у класса (до этого пользовался inspect.getmro).

>>> class A(object):
...     pass
...     
>>> class B(A):
...     pass
...     
>>> B.mro()
[<class '__main__.B'>, <class '__main__.A'>, <type 'object'>]
>>> import inspect
>>> inspect.getmro(B)
(<class '__main__.B'>, <class '__main__.A'>, <type 'object'>)



Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version