2024-05-19 15:38:47 发布
网友
列表和字典的理解是强大和快速的,但他们可能很难阅读。我的大脑阅读缓冲区很快就会填满,尤其是当它们被深深嵌套时。有没有办法让这些更具可读性?在
另一种方法是保持理解的能力,但是在生成器上构建生成器来删除嵌套,然后使用内置的list/set/dict等。。。-类似于:
list
set
dict
{k:v for k, v in enumerate(range(10)) if v % 2 == 0}
可以分解为:
这实际上更为冗长,但如果您将类似的逻辑应用于嵌套的级别,则实际上更有意义。在
你说得对。;)它们可能很难阅读,这也会使它们难以编写和调试。以下面的例子为例,听写理解:
current_team = dict((k,v) for k,v in list(team.items()) for player in v[‘player’] if player['year'] == 2013)
太多年的C和Java编程让我很难读懂。理解在逻辑上被分成不同的部分,但我仍然需要真正地盯着它来分解它。在
要记住的关键是理解是一种表达,而不是陈述。因此,可以用parens包围表达式,然后使用implicit line joining添加换行符,根据其嵌套级别组织表达式:
这里更清楚的是“the last index varying fastest, just like nested for loops.”
您甚至可以添加空行和注释:
current_players = (dict((k,v) # dict comprehension: for k,v in list(team.items()) # let’s filter the team member dict... for player in v['player'] # for players... if player['year'] == 2013)) # who are playing this year
需要注意的是:Python语言参考说明“连续行的缩进并不重要”,因此可以使用任何形式的缩进来提高可读性,但是解释器不会做任何额外的检查。在
另一种方法是保持理解的能力,但是在生成器上构建生成器来删除嵌套,然后使用内置的
list
/set
/dict
等。。。-类似于:可以分解为:
^{pr2}$这实际上更为冗长,但如果您将类似的逻辑应用于嵌套的级别,则实际上更有意义。在
你说得对。;)它们可能很难阅读,这也会使它们难以编写和调试。以下面的例子为例,听写理解:
太多年的C和Java编程让我很难读懂。理解在逻辑上被分成不同的部分,但我仍然需要真正地盯着它来分解它。在
要记住的关键是理解是一种表达,而不是陈述。因此,可以用parens包围表达式,然后使用implicit line joining添加换行符,根据其嵌套级别组织表达式:
^{pr2}$这里更清楚的是“the last index varying fastest, just like nested for loops.”
您甚至可以添加空行和注释:
需要注意的是:Python语言参考说明“连续行的缩进并不重要”,因此可以使用任何形式的缩进来提高可读性,但是解释器不会做任何额外的检查。在
相关问题 更多 >
编程相关推荐