如何检查矩阵中的值?

时间:2019-02-28 22:16:30

标签: python loops

如果我有一个矩阵,例如:

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

如何遍历矩阵以检查矩阵是否包含值1?在这种情况下,矩阵不在。

4 个答案:

答案 0 :(得分:1)

如果有列表列表,可以将其转换为numpy array

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

现在您可以检查至少一个元素是否等于1:

contains_1 = numpy.any(arr==1)

答案 1 :(得分:1)

您还可以使用itertools的chain()函数来展平矩阵并在1D结果中寻找1。

from itertools import chain
hasOne = 1 in chain(*matrix) 

答案 2 :(得分:0)

尝试一下:

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

答案 3 :(得分:0)

假设您的矩阵是2D列表:

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

这是一种非常冗长的方法,但这是一种更Python化的方法:

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

这一单线包含三个部分:

    如果可迭代的1 in row包含元素True,则
  • row1,否则为False
  • [1 in row for row in matrix]对可迭代1 in row中的每个元素row执行表达式matrix,并返回结果列表
  • any()像列表一样接受一个可迭代对象,如果其中任何元素为真,则返回True;否则,它将返回False

您还可以轻松地扩展此代码以适应搜索 any 元素,而不仅仅是1:

def contains_element(matrix, element):
    return any(element in row for row in matrix)