带有谓词的python min函数
pyhon min function with predicate
假设我们有一个 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*/ )
有办法实现吗?
使用两个 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])
只有item_matrix
可以包含除True
之外的其他"truthy"值时才需要== True
部分,例如数字,字符串等,但仅当True
和 False
.
假设我们有一个 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*/ )
有办法实现吗?
使用两个 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])
只有item_matrix
可以包含除True
之外的其他"truthy"值时才需要== True
部分,例如数字,字符串等,但仅当True
和 False
.