Как проверить значение в матрице? - PullRequest
0 голосов
/ 01 марта 2019

Если у меня есть матрица, такая как:

0,2,4
-1,4,2
3,4,2

Как я могу пройтись по матрице, чтобы проверить, содержит ли матрица значение 1?Где в данном случае матрицы нет.

Ответы [ 4 ]

0 голосов
/ 01 марта 2019

Вы также можете использовать функцию цепочки () в itertools, чтобы сгладить матрицу и найти 1 в одномерном результате.

from itertools import chain
hasOne = 1 in chain(*matrix) 
0 голосов
/ 01 марта 2019

Скажем, ваша матрица - это двумерный список:

matrix = [[0,  2, 4],
          [-1, 4, 2],
          [3,  4, 2]]

, тогда вам просто нужно выполнить итерацию по нему:

def contains_1(matrix):
    for row in matrix:
        for element in row:
            if element == 1:
                return true
    # if it gets through all of that without returning true
    return false

Хотя это очень многословный способ сделать это -вот более питонический способ:

def contains_1(matrix):
    return any([1 in row for row in matrix])

Эта однострочная строка состоит из трех частей:

  • 1 in row равно True, если итеративный row содержит элемент1 и False в противном случае
  • [1 in row for row in matrix] выполняет выражение 1 in row для каждого элемента row в итерируемом matrix и возвращает список результатов
  • any() принимает итеративный, как этот список, и возвращает True, если какой-либо из его элементов верен;в противном случае он возвращает False.

. Вы также можете легко расширить этот код для поиска любого элемента, а не только 1:

def contains_element(matrix, element):
    return any(element in row for row in matrix)
0 голосов
/ 01 марта 2019

Если у вас есть список списков, вы можете преобразовать его в numpy array:

arr = numpy.array([[0,2,4],
                  [-1,4,2], 
                  [3,4,2]])

Теперь вы можете проверить, равен ли хотя бы один элемент 1:

contains_1 = numpy.any(arr==1)
0 голосов
/ 01 марта 2019

Попробуйте это:

exist = elt in A[0] or elt in A[1] or elt in A[2]
print(exist)

Например:

   >>> A = [[1, 4, 5, 12], 
        [-5, 8, 9, 0],
        [-6, 7, 11, 19]]
   >>> exist = 1 in A[0] or 1 in A[1] or 1 in A[2]
   >>> print(exist)
   >>> True
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...