我不知道如果我能像有什麼方法可以在列表理解中返回值?
[return role_ for role_ in self.roles if role.name==parameter]
當然這是行不通的列表理解返回值。目前,我不得不使用經典的for循環
for role_ in self.roles:
if role_.name == parameter:
return role_
我不知道如果我能像有什麼方法可以在列表理解中返回值?
[return role_ for role_ in self.roles if role.name==parameter]
當然這是行不通的列表理解返回值。目前,我不得不使用經典的for循環
for role_ in self.roles:
if role_.name == parameter:
return role_
使用next()
function與發電機的表達:
return next((role_ for role_ in self.roles if role_.name == parameter), None)
這將返回第一個匹配的role_
值,或者如果沒有這樣的值,則返回None
。
你不能使用列表理解,不,因爲你是不產生列表。
最接近的事是與發電機表達主叫next
:
return next(role_ for role_ in self.roles if role_.name==parameter)
不。列表理解的目的是建立一個列表,而不是保存代碼行。
由於您不想要列表作爲結果,因此列表理解是該作業的錯誤工具。一個循環非常好。
好的,這是我對列表理解的理解。 –
你只是在尋找與你的「經典for循環」相當的1-liner? – jacoblaw
不,因爲列表理解在那裏產生一個列表。確切地說,是 –
。我上面的代碼是「無法訪問」。 –