1.合并追加到列表声明
我们从一个简单的开始。不是声明一个空列表然后附加到它,而是直接用所有元素初始化列表。这缩短了代码并使意图更加明确。它的性能也稍微好一些,因为它避免了对 append()
的函数调用。
这同样适用于填充其他集合类型,如集合和字典。
2 使用items()直接解包字典值
当遍历字典时,你需要键和值,那么不要手动访问值。而是迭代dictionary.items()
,它同时为你提供键和值。
这节省了我们过去分配给 players
的行,代码现在读起来更自然,重复更少。
teams_by_color = {"blue": ["Patrick", "Jessi"]}
for team_color in teams_by_color:
players = teams_by_color[team_color]
if is_winning(team_color):
advance_level(players)
# -> refactor
for team_color, players in teams_by_color.items():
if is_winning(team_color):
advance_level(players)
3. 将 range(len) 替换为枚举
如果我们需要遍历列表并且需要同时跟踪索引和当前项,请使用内置enumerate()
函数而不是range(len)
。这会将当前索引和当前项目作为元组返回。所以我们可以直接在这里查看值,也可以访问带有索引的项目。
for i in range(len(players)):
pri