2017-07-29 4 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 
関連する問題