0

假设我有一个表示数值矩阵的二维列表(不,我没有为此使用 numPy)。此列表中允许的类型属于numbers.Number类别。假设我希望隔离此列表中的任何非数字值,例如字符串,我能看到的唯一选择是单独检查每个元素并检查它是否不是 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 或其库之一是否具有用于识别列表(列表)中无关元素的内置函数?还是应该继续我提供的当前示例?

4

1 回答 1

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')
于 2016-08-02T14:56:16.023 回答