列表中的任何元素都是整数

时间:2017-07-29 08:42:28

标签: python list

我有一个列表,可能包含一个列表(后来也可以由列表组成,无限制)。有没有办法测试底部的任何元素是否有'这些列表有一个整数?该列表最终将始终包含数字(浮点数或整数)。

由于我事先并不知道它的嵌套列表的数量,我能想到的唯一方法就是这样,

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

有更合理的方法吗?

2 个答案:

答案 0 :(得分:3)

我建议使用像collapse() from the more-itertools library这样的东西,它会以递归方式下降到列表和其他可迭代类型中,并产生基本的非迭代元素。然后,您可以检查collapse()产生的任何元素是否为整数。

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

答案 1 :(得分: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