2024-05-13 08:57:21 发布
网友
我遇到的许多开发人员建议,最好使用简单的循环和if条件,而不是单行列出理解语句。在
我总是发现它们非常强大,因为我可以在一行代码中容纳大量代码,并且可以避免创建大量变量。为什么它仍然被认为是一种不好的做法?在
(慢吗?)在
列表理解用于创建列表,例如:
squares = [item ** 2 for item in some_list]
For循环更适合于使用列表元素(或其他对象)执行某项操作:
使用理解来理解它的副作用,或者使用for循环来创建列表,通常是不受欢迎的。在
这里的一些其他答案主张,一旦理解变得太长,就把它变成一个循环。我认为这不是一个好的风格:创建列表所需的append调用仍然很难看。相反,重构为函数:
append
def polynomial(x): return x ** 4 + 7 * x ** 3 - 2 * x ** 2 + 3 * x - 4 result = [polynomial(x) for x in some_list]
只有当你关心速度-而且你已经完成了你的分析!–你应该保留长的,不可读的列表理解。在
这还不算坏。在
但是,请列出
一般人都不赞成。在
换句话说,可读性很重要。在
作为第一个坏例子的一个过分做作的例子:
x = range(10) [x.append(5) for _ in xrange(5)]
基本上,如果不存储结果,并且/或它修改了其他对象,那么列表理解可能是个坏主意。在
作为第二个例子,我们来看看几乎所有用python编写的代码golf条目。一旦你的列表理解开始变得不可读,考虑使用for循环。在
性能没有受到影响(即使有,我也不会担心;如果性能如此重要,你就错了语言)。有些人不赞成清单的理解,因为它们对某些人来说过于简洁,这是个人喜好的问题。一般来说,我发现简单的列表理解比它们的循环/条件等价物更具可读性,但是当它们开始变长(例如,你开始超过80个字符),它们可能会被一个循环代替。在
列表理解用于创建列表,例如:
For循环更适合于使用列表元素(或其他对象)执行某项操作:
^{pr2}$使用理解来理解它的副作用,或者使用for循环来创建列表,通常是不受欢迎的。在
这里的一些其他答案主张,一旦理解变得太长,就把它变成一个循环。我认为这不是一个好的风格:创建列表所需的
append
调用仍然很难看。相反,重构为函数:只有当你关心速度-而且你已经完成了你的分析!–你应该保留长的,不可读的列表理解。在
这还不算坏。在
但是,请列出
一般人都不赞成。在
换句话说,可读性很重要。在
作为第一个坏例子的一个过分做作的例子:
基本上,如果不存储结果,并且/或它修改了其他对象,那么列表理解可能是个坏主意。在
作为第二个例子,我们来看看几乎所有用python编写的代码golf条目。一旦你的列表理解开始变得不可读,考虑使用for循环。在
性能没有受到影响(即使有,我也不会担心;如果性能如此重要,你就错了语言)。有些人不赞成清单的理解,因为它们对某些人来说过于简洁,这是个人喜好的问题。一般来说,我发现简单的列表理解比它们的循环/条件等价物更具可读性,但是当它们开始变长(例如,你开始超过80个字符),它们可能会被一个循环代替。在
相关问题 更多 >
编程相关推荐