2016-08-02 75 views
0

假設我有一個表示數值矩陣的二維列表(不,我沒有使用numPy)。此列表中允許的類型屬於numbers.Number的類別。假設我希望隔離此列表中的任何非數字值(例如字符串),我可以看到的唯一選項是單獨檢查每個元素並檢查它是否不是數字的實例。編號:Python - 識別列表中的無關類型

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或其中的一個庫是否具有用於標識列表中的無關元素的內置函數?還是應該繼續我提供的當前示例?

回答

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') 
+0

它完美!謝謝! –