列表理解和生成器表达式
列表理解和生成器表达式
列表理解和生成器表达式是重要的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
对的地方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
方法。