是否可以将以下内容转换为列表理解?
cleaned_list = []
for item in dirtry_list:
try:
item.video
except Video.DoesNotExist:
pass
else:
cleaned_list.append(item)
答案 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)