为什么列表理解以这种方式工作? IF声明

时间:2015-01-08 22:00:51

标签: list list-comprehension tiles cells

我以为我已经或多或少地弄清了列表推导,但后来我从另一个问题中看到了这行代码。

Pythonic and efficient way of finding adjacent cells in grid

我已将代码更改为仅返回组成相邻切片的8个元组(添加到当前切片时)。

[(i, j) for i in (-1,0,1) for j in (-1,0,1) if i != 0 or j != 0]

产生

[(-1, -1), (-1, 0), (-1, 1), (0, -1), (0, 1), (1, -1), (1, 0), (1, 1)]

除了有条件的最后一部分之外,该陈述对我来说实际上是有道理的:

if i != 0 or j != 0

如果我们试图找到相邻的单元格,并且我们想省略我们所在的单元格,那么条件部分是否应该读取AND而不是OR?

像这样:

if i != 0 and j != 0

相反,如果我把AND放在那里,我只返回这些元组:

(-1, -1), (-1, 1), (1, -1), (1, 1)

对我来说,这似乎很直观。

0 个答案:

没有答案