【发布时间】:2021-11-29 19:56:31
【问题描述】:
如果我有一个列表列表
矩阵 = [[2, 3, 1, 2],[1, 2, 3, 2],[3, 3, 1, 2], [2, 2, 3, 3]]
如果每个列中都存在例如 element = 1,我如何使用 for 循环进行检查
【问题讨论】:
如果我有一个列表列表
矩阵 = [[2, 3, 1, 2],[1, 2, 3, 2],[3, 3, 1, 2], [2, 2, 3, 3]]
如果每个列中都存在例如 element = 1,我如何使用 for 循环进行检查
【问题讨论】:
使用all、in 和列表推导:
matrix = [[2, 3, 1, 2], [1, 2, 3, 2], [3, 3, 1, 2], [2, 2, 3, 3]]
valid = all(1 in row for row in matrix)
或者,详细的方式:
matrix = [[2, 3, 1, 2], [1, 2, 3, 2], [3, 3, 1, 2], [2, 2, 3, 3]]
valid = True
for row in matrix:
if 1 not in row:
valid = False
break
【讨论】:
all。只需让all 评估生成器理解即可。根据价值,它会更便宜。
使用 numpy:
np.any(a==1, 1).all()
>>> a = np.array([[2, 3, 1, 2],[1, 2, 3, 2],[3, 3, 1, 2], [2, 2, 3, 3]])
>>> np.any(a==1, 1).all()
False
>>> a = np.array([[2, 3, 1, 2],[1, 2, 3, 2],[3, 3, 1, 2], [2, 1, 3, 3]])
>>> np.any(a==1, 1).all()
True
【讨论】: