假设我有一个表示数值矩阵的二维列表(不,我没有使用numPy)。此列表中允许的类型属于numbers.Number类别。假设我希望隔离此列表中的任何非数字值,例如字符串,我可以看到的唯一选项是单独检查每个元素并检查它是否不是数字的实例。编号:
from numbers import Number
def foo(matrix):
# Check for non-numeric elements in matrix
for row in matrix:
for element in row:
if not isinstance(element, Number):
raise ValueError('The Input Matrix contains a non-numeric value')
...
我的问题是:有没有另一种方法可以在不查看每个元素的情况下检查整个矩阵? Python或其中一个库是否具有内置函数来识别列表(列表)中的无关元素?或者我应该继续使用我提供的当前示例吗?
答案 0 :(得分:2)
试试这个:
print(any(not isinstance(x, Number) for row in matrix for x in row))
在功能中:
def foo(matrix):
if any(not isinstance(x, Number) for row in matrix for x in row):
raise ValueError('The Input Matrix contains a non-numeric value')