是否可以将以下内容转换为列表理解?尝试/列表理解除外
cleaned_list = []
for item in dirtry_list:
try:
item.video
except Video.DoesNotExist:
pass
else:
cleaned_list.append(item)
是否可以将以下内容转换为列表理解?尝试/列表理解除外
cleaned_list = []
for item in dirtry_list:
try:
item.video
except Video.DoesNotExist:
pass
else:
cleaned_list.append(item)
因为,根据你的其他问题,你使用Django,只是检查actual field。
cleaned_list = [item for item in dirty_list if item.video_id is not None]
'cleaned_list = [项目在dirty_list中,如果不是item.video_id]'? – MFB
@MFB:在没有ID可以是0的情况下,是的。 –
您不能将try:
语句放在列表理解中。 Generators对于更复杂的列表处理存在:
def clean(lst):
for item in lst:
try:
item.video
except Video.DoesNotExist:
pass
else:
yield item
cleaned_list = clean(dirty_list)
的Python:
cleaned_list = filter(lambda x: hasattr(x, 'video'), dirty_list)
Django的: 你可以做到以下几点,如果dirty_list是一个QuerySet
cleaned_list = dirty_list.filter(video__isnull=False)
毫无疑问,是一个令人费解的列表理解,将复制这一点,但为什么你想从上面改变吗? –
当然python中的'filter'函数是从一个脏列表创建一个干净列表的正确范例?清洁=过滤器(功能,脏)。然后只需编写你的功能。 – Spacedman