[英]Python 3 Exercise: What's the difference between these two?
我正在做一個 python 練習。 這段代碼讓我很困惑。
這是我寫的:
def available_on_night(gamers_list, day):
for gamer in gamers_list:
if day in gamer['availability']:
return gamer
我的代碼只返回一個可用客人的信息,這不是我想要的。
提供的答案僅使用一行代碼編寫,並返回所有可用客人的信息。 這里是:
def available_on_night(gamers_list, day):
return [gamer for gamer in gamers_list if day in gamer['availability']]
我的代碼和提供的答案有什么區別? 如果選擇不在一行中編寫所有內容,我應該對我的代碼進行哪些更改? 謝謝!
簡化后的答案是這樣的:
result_list = []
for gamer in gamers_list:
if day in gamer['availability']:
result_list.append(day)
return result_list
不同之處在於解決方案返回一個列表,而您通過直接返回第一個值來停止程序。 寫return
時,您退出 function。 嘗試將值存儲在列表中,並在 function 的末尾返回列表。
我建議閱讀以下有關列表推導的文章:
我會保持簡單,您只返回一項匹配的項目。 而是保留項目列表並在 for 循環結束時返回它們。
def available_on_night(gamers_list, day):
out = []
for gamer in gamers_list:
if day in gamer['availability']:
out.append(gamer)
return out
不過使用列表推導,避免不必要的變量。
希望這有幫助:)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.