是否可以將以下內容轉換爲列表理解?嘗試/列表理解除外
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