带谓词的pyhon min函数

时间:2018-12-21 16:37:02

标签: python for-loop distance min

假设我们有一个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*/ )

有没有办法做到这一点?

1 个答案:

答案 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