我有一个列表,可能包含一个列表(后来也可以由列表组成,无限制)。有没有办法测试底部的任何元素是否有'这些列表有一个整数?该列表最终将始终包含数字(浮点数或整数)。
由于我事先并不知道它的嵌套列表的数量,我能想到的唯一方法就是这样,
x = [[[[5]]]]
if (len(str(x)) != len(str(x).replace('.','')) or ('int' not in str(x)):
int_in_list = False
有更合理的方法吗?
答案 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