尝试/除了列表理解

时间:2011-09-21 00:06:59

标签: python django

是否可以将以下内容转换为列表理解?

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

3 个答案:

答案 0 :(得分:12)

您不能在列表解析中添加try:语句。 Generators存在更复杂的列表处理:

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

cleaned_list = clean(dirty_list)

答案 1 :(得分:10)

根据您的其他问题,您使用的是Django,只需查看actual field

cleaned_list = [item for item in dirty_list if item.video_id is not None]

答案 2 :(得分:2)

的Python:

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

Django的: 如果dirty_list是查询集,则可以执行以下操作

cleaned_list = dirty_list.filter(video__isnull=False)