理解和生成器表达式列表

列表理解和生成器表达式是重要的Python特性,允许您做隐式枚举简洁的方式。给一个简单的例子,下面的列表理解构建一个列表包含数字从1到5的平方:

gurobi > [x * x x [1、2、3、4、5]] (1、4、9、16、25)
生成器表达式非常相似,但它是用来生成一个Iterable可以遍历(的东西)。例如,假设我们要计算的平方和的数字从1到5。我们可以使用列表理解构建列表,然后通过这个列表总和。然而,它更简单,更有效率的使用生成器表达式:
gurobi >总和(x * x x [1、2、3、4、5]) 55
生成器表达式可以使用当一个方法接受一个Iterable可以遍历参数(的东西)。例如,大多数Python接受的方法列表参数(最常见的一种Iterable)也将接受一个生成器表达式。

请注意,有一个Python程序创建一个连续的整数列表:范围。上面通常会写如下:

gurobi >总和(x * x x的范围(1,6))
细节上的范围函数可以被发现在这里

列表理解和生成器表达式可以包含不止一个子句和一个或多个如果条款。下面的示例构建元组包含所有的列表x, y对的地方xy都是小于4x小于y:

gurobi > [x (x, y)范围(4)y的范围(4)如果x < y] [(0, 1), (0, 2), (0, 3), (1、2), (1,3), (2, 3)]
请注意,语句执行从左到右,从一个可用于下一个值,因此更有效的方式上面写的是:
gurobi > [x (x, y)范围(4)y的范围(x + 1, 4)]

Python生成器表达式是广泛使用在我们的示例中,主要的上下文addConstrs方法。