попробуйте / кроме как в понимании списка - PullRequest
3 голосов
/ 21 сентября 2011

Можно ли преобразовать следующее в понимание списка?

cleaned_list = []
for item in dirtry_list:
    try:
        item.video
    except Video.DoesNotExist:
        pass
    else:
        cleaned_list.append(item)

Ответы [ 3 ]

12 голосов
/ 21 сентября 2011

Вы не можете поместить оператор try: в понимание списка. Генераторы существуют для более сложной обработки списка:

def clean(lst):
    for item in lst:
        try:
            item.video
        except Video.DoesNotExist:
            pass
        else:
            yield item

cleaned_list = clean(dirty_list)
10 голосов
/ 21 сентября 2011

Поскольку, основываясь на других ваших вопросах, вы используете Django, просто отметьте поле фактическое .

cleaned_list = [item for item in dirty_list if item.video_id is not None]
2 голосов
/ 21 сентября 2011

Python:

cleaned_list = filter(lambda x: hasattr(x, 'video'), dirty_list)

Джанго: Вы можете сделать следующее, если dirty_list является набором запросов

cleaned_list = dirty_list.filter(video__isnull=False)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...