如果我有一个矩阵,例如:
0,2,4
-1,4,2
3,4,2
如何遍历矩阵以检查矩阵是否包含值1
?在这种情况下,矩阵不在。
答案 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
,则row
为1
,否则为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)