функция pyhon min с предикатом - PullRequest
0 голосов
/ 21 декабря 2018

Скажем, у нас есть матрица nxk с логическими значениями, представляющими расположение элементов.Ваше местоположение известно, и мы хотим найти ближайший к нам элемент.

Я хочу написать его в одном предложении, используя функцию min в python.(длинная реализация известна)

Я ожидаю написать что-то вроде следующего:

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 голосов
/ 21 декабря 2018

Используйте два цикла 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, такие как числа, строки и т. Д., Но не только если True и False.

...