if any(x0+ GRID_STEPi<x, y0+ GRID_STEPj<y, x0 + GRID_STEP*(i+1)>x,y0 + GRID_STEP*(j+1)>y for x, y in points3): generator expression must be parenthesized
时间: 2023-06-18 20:06:08 浏览: 100
这是因为 generator expression 中包含了多个条件语句,需要使用括号将其包裹起来以明确运算顺序。正确的写法如下:
if any((x0 + GRID_STEP*i < x and y0 + GRID_STEP*j < y and x0 + GRID_STEP*(i+1) > x and y0 + GRID_STEP*(j+1) > y) for x, y in points3):
相关问题
if any((x0 + GRID_STEP * i < x5 < x0 + GRID_STEP * (i+1) and y0 + GRID_STEP * j < y5 < y0 + GRID_STEP * (j+1)) for x5, y5 in points3):
这段代码是一个Python的条件语句,其中包含一个布尔表达式。
在这个布尔表达式中,使用了一个Python内置的any()函数,它的作用是判断一个可迭代对象中是否有任意一个元素为True。
条件语句的判断条件是一个生成器表达式,它会生成一个由一系列布尔值组成的可迭代对象。生成器表达式的内容如下:
```
(x0 + GRID_STEP * i < x5 < x0 + GRID_STEP * (i+1) and y0 + GRID_STEP * j < y5 < y0 + GRID_STEP * (j+1)) for x5, y5 in points3
```
其中,`points3` 是一个二元组(或称为元组对)的列表,表示平面上的一些点。生成器表达式的作用是遍历这个列表,并对其中的每个二元组进行判断。
判断条件是一个复合布尔表达式,它由两个条件通过and运算符组合而成。第一个条件是:
```
x0 + GRID_STEP * i < x5 < x0 + GRID_STEP * (i+1)
```
它表示点 `(x5, y5)` 的横坐标 x5 是否在网格线上。其中,x0 和 GRID_STEP 是常数,i 是一个变量,表示网格线的编号。也就是说,这个条件判断了点 `(x5, y5)` 是否在第 i 条竖直网格线内。
第二个条件是:
```
y0 + GRID_STEP * j < y5 < y0 + GRID_STEP * (j+1)
```
它表示点 `(x5, y5)` 的纵坐标 y5 是否在网格线上。其中,y0 和 GRID_STEP 是常数,j 是一个变量,表示网格线的编号。也就是说,这个条件判断了点 `(x5, y5)` 是否在第 j 条水平网格线内。
因此,整个条件语句的作用是判断点 `(x5, y5)` 是否在网格内。如果有任意一个点在网格内,那么整个条件表达式的值就为True,否则为False。
grid = gray3.crop((x0+ GRID_STEPi, y0+ GRID_STEPj, x0 + GRID_STEP*(i+1), y0 + GRID_STEP*(j+1))) 用if语句表述如果一个个自定义的点在网格中记为1否则记为0
可以使用以下代码实现:
```
# 定义自定义点的列表
custom_points = [(2, 3), (1, 4), (4, 2)]
# 遍历每个格子
for i in range(num_cols):
for j in range(num_rows):
# 计算格子的位置
x1 = x0 + GRID_STEP * i
y1 = y0 + GRID_STEP * j
x2 = x1 + GRID_STEP
y2 = y1 + GRID_STEP
# 判断自定义点是否在格子中
if any((x, y) == (i, j) for x, y in custom_points):
# 如果在,则记为1
grid = gray3.crop((x1, y1, x2, y2))
# do something with grid
# ...
# 记为1
value = 1
else:
# 否则记为0
value = 0
# 输出格子的值
print(value)
```
在上面的代码中,我们首先定义了自定义点的列表,然后遍历每个格子。对于每个格子,我们计算其位置,并使用 `any()` 函数判断自定义点是否在格子中。如果在,则将其记为1,否则记为0,并输出格子的值。注意,你需要根据具体的需求修改代码中的 `do something with grid` 部分来处理每个格子。
阅读全文