簡體   English   中英

Python 3 練習:這兩者有什么區別?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM