列表理解和生成器表达式

列表理解和生成器表达式

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

Gurobi > [x*x for x in [1,2,3,4,5]] [1,4,9,16,25]
生成器表达式非常类似,但它用于生成可迭代的(可以迭代的东西)。例如,假设我们要计算从1到5的数的平方和。我们可以使用列表推导式来构建列表,然后将该列表传递给总和.然而,使用生成器表达式更简单、更有效:
x*x for x in [1,2,3,4,5
生成器表达式可以在方法接受可迭代的参数(可以迭代的东西)。例如,大多数Python方法接受列表的最常见类型可迭代的)也将接受生成器表达式。

注意,有一个用于创建连续整数列表的Python例程:范围.上述内容通常会写如下:

sum(x*x for x in range(1,6))
细节上的范围函数可以被找到在这里

列表推导式和生成器表达式都可以包含多个子句,以及一个或多个如果条款。下面的示例构建包含所有元素的元组列表x, y对的地方xy都小于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方法。