假设我们有一个nxk矩阵,其布尔值表示项的位置。您的位置已知,我们希望找到离我们最近的物品。
我想用python的min函数用一句话写出来。 (众所周知的实现方式很长)
我期望编写如下内容:
min_dist = min(distance(my_location, (x,y)) for x,y in
/*range(n),range(k) such that item_matrix[x][y] == True*/ )
有没有办法做到这一点?
答案 0 :(得分:1)
使用两个for
循环和一个if
条件(为了更好的可读性,换行符是可选的):
min_dist = min(distance(my_location, (x,y))
for x in range(n)
for y in range(k)
if item_matrix[x][y])
或使用itertools.product
:
from itertools import product
min_dist = min(distance(my_location, (x,y))
for (x, y) in product(range(n), range(k))
if item_matrix[x][y])
仅当== True
可以包含item_matrix
之外的其他“真实”值(例如数字,字符串等)时,才需要True
部分,但仅当{{1} }和True
。