很多方法來縮短這個:
map(lambda score_str: int(score_str), i.keys())
表達lambda score_str: int(score_str)
可能只是寫爲int
,無需映射lambda
如果你正在做的是調用該函數。
如果你想遍歷字典不要打電話i.keys()
,只需使用i
。
這就給了你:
list(map(int, i))
但讀起來更容易(雖然稍長)如果你使用列表理解:
scores = scores + [int(score_str) for score_str in i]
你也可以嵌套在列表解析裏循環,但更短並不總是更好,所以我建議反對。
scores = [int(score_str) for i in data for score_str in i]
這同樣適用於最後一部分:
sorted_scores = list(map(lambda score_int: str(score_int), reversed(sorted(scores))))
可以只是:
sorted_scores = [ str(score_int) for score_int in sorted(scores, reverse=True)]
你應該養成使用排序時reverse
參數的習慣,這不是」這裏沒關係,但有些情況下,反向排序與排序和反轉不一樣。
此外,您可以通過使用在sort
的key
參數避免鑄造:
scores = [score_str for i in data for score_str in i]
sorted_scores = sorted(scores, reverse=True, key=int)
爲什麼它需要更加緊湊?如果您有**工作代碼**,您認爲可以改進(不僅僅是一個功能),請參閱[codereview.se]。 – jonrsharpe
另外,通過「def語句」,你的意思是*函數*? –
我不明白你想要什麼,但你可以簡單地通過這個實現你的目標:return data.keys.sort() – Sagar