2016-03-03 129 views
1

這是一個Python程序。這是我到目前爲止。該程序當前忽略多重嵌套列表並僅計算單個圖層值。檢查列表的方法必須是索引。遞歸搜索多個嵌套列表並返回整數:Python

def DigitCount(lst): 
    if len(lst)==0: 
     return 0 
    val = DigitCount(lst[1:]) 
    if len(lst) > 0: 
     if type(lst[0]) != list: 
      if type(lst[0]).isdigit(): 
       return 1 + val 
     if type(lst[0])==list: 
      DigitCount(lst[0]) 
      return val 
    return val 
+0

當您說「整數計數」時,您是指數組中的元素的總數或數量 – JGerulskis

+0

數量@JGerulskis – Val

+0

您有冗餘檢查。你檢查'如果len(lst)== 0:',那麼在它已經保證'len(lst)'大於0後檢查'len(lst)> 0:'。 –

回答

1

您可以簡化您使用sum邏輯,遞歸,而忽視了名單調用DigitCount(ele)或以其他方式檢查,如果該元素是一個int,所有的結果相加元素:

def DigitCount(lst): 
    return sum(DigitCount(ele) if isinstance(ele, list) else isinstance(ele, int) 
       for ele in lst) 

輸出:

In [22]: DigitCount([[1, 2, 3], [1, 2, 3, [4, 5, [3, 4, 3]]]]) 
Out[22]: 11 

isinstance(ele, int)要麼retu rns 0或1,所以每個遞歸調用要麼返回1或0,所以這是一個總結所有值的簡單情況。

相關問題