2017-07-29 64 views
0

我有一個列表,它可能包含一個列表(隨後也可以由列表構成,並且無限)。有沒有一種方法來測試這些列表「底部」的任何元素是否具有整數?該列表最終總是會有數字(浮點數或整數)。列表中的任何元素都是整數

由於我不知道它嵌套表的數事前,我能想到這樣做會是這樣的唯一途徑,

x = [[[[5]]]] 
if (len(str(x)) != len(str(x).replace('.','')) or ('int' not in str(x)): 
    int_in_list = False 

是否有這樣做的一個更合乎邏輯的方式?

回答

3

我建議使用類似collapse() from the more-itertools library的東西,它會遞歸地下降到列表和其他可迭代類型,併產生基本的不可迭代元素。然後你可以檢查collapse()產生的任何元素是否是一個整數。

any(isinstance(x, int) for x in collapse(...)) 
2

這裏亞去:

numlist = [[[[[1]]]]] 

def recursive_flatten(lst): 
    for item in lst: 
     if isinstance(item, list): 
      yield from recursive_flatten(item) 
     yield item 

if any(isinstance(item, int) for item in recursive_flatten(numlist)): 
    # Horray 
    pass 
相關問題