为什么有时会不理解python列表理解?


问题内容

我遇到的许多开发人员建议最好的做法是使用简单的循环,如果条件而不是一行列表理解语句。

我一直发现它们非常强大,因为我可以在一行中放入很多代码,并且可以避免创建大量变量。为什么仍然认为这是一种不良做法?

(慢吗?)


问题答案:

列表推导用于 创建 列表,例如:

squares = [item ** 2 for item in some_list]

对于循环,使用列表(或其他对象)的元素更好

for item in some_list:
    print(item)

人们通常不理解使用它的副作用或使用for循环来创建列表。


这里的其他一些答案主张一旦理解时间太长,就将理解力变成一个循环。我认为这不是好方法:append创建列表所需的调用仍然很丑陋。而是重构为一个函数:

def polynomial(x):
    return x ** 4 + 7 * x ** 3 - 2 * x ** 2 + 3 * x - 4
result = [polynomial(x) for x in some_list]

仅当您担心速度时,并且您已经完成了分析!–您应保持冗长且难以理解的列表理解。