列出推导式和生成器表达式
列出推导式和生成器表达式
列表推导式和生成器表达式是重要的Python特性,它们允许您以简洁的方式执行隐式枚举。举个简单的例子,下面的列表推导式构建了一个包含从1到5的数的平方的列表:
Gurobi > [x*x for x in [1,2,3,4,5]] [1,4,9,16,25]生成器表达式非常类似,但它用于生成
可迭代的
(可以迭代的东西)。例如,假设我们要计算从1到5的数的平方和。我们可以使用列表综合来构建列表,然后将该列表传递给总和
.然而,使用生成器表达式更简单、更有效:Gurobi > sum(x*x for x in [1, 2, 3, 4, 5]生成器表达式可在方法接受
可迭代的
参数(可以迭代的东西)。例如,大多数Python方法接受列表
参数(最常见的类型可迭代的
)也接受一个生成器表达式。注意,有一个Python例程用于创建一个连续的整数列表:范围
.上面的内容通常是这样写的:
Gurobi > sum(x*x for x in range(1,6))细节上的
范围
可以找到函数在这里.列表推导式和生成器表达式都可以包含一个以上的表达式为
子句,以及一个或多个如果
条款。下面的例子构建了一个包含所有元组的列表x, y
对的地方x
和y
都小于4和x
小于y
:
gurobi > [x (x, y)范围(4)y的范围(4)如果x < y][(0, 1),(0, 2),(0, 3),(1、2),(1,3),(2,3)]请注意,
为
语句是从左到右执行的,一个语句的值可以在下一个语句中使用,所以写上述语句的更有效的方法是:Gurobi > [(x,y) for x in range(4) for y in range(x+ 1,4)]
生成器表达式在我们的Python示例中被广泛使用,主要是在addConstrs
方法。