如何检查Python列表及嵌套列表是否仅包含数值型数据?
检查嵌套列表是否仅包含数值型数据的简便方法
你可以通过递归遍历的方式处理嵌套列表的场景,以下是两种简洁的实现方案:
方法1:递归遍历判断
def all_numeric(lst): for item in lst: if isinstance(item, list): # 遇到嵌套列表,递归检查内部元素 if not all_numeric(item): return False elif not isinstance(item, (int, float)): # 非列表元素,直接判断是否为数值类型 return False return True
测试示例
- 全数值嵌套列表:
all_numeric([1, 2.5, [3, 4.0]])→ 返回True - 包含非数值元素:
all_numeric([1, "a", [2]])→ 返回False - 多层嵌套结构:
all_numeric([[1, [2.3]], 5])→ 返回True
方法2:结合all()的紧凑递归实现
利用生成器表达式和递归简化代码逻辑,写法更简洁:
def is_numeric(item): if isinstance(item, list): return all(is_numeric(subitem) for subitem in item) return isinstance(item, (int, float))
调用方式:is_numeric(your_nested_list),返回布尔值表示列表是否仅包含数值类型元素。
扩展说明
如果需要支持numpy数值类型(如numpy.int64、numpy.float64),可以扩展判断条件:
import numpy as np def is_numeric(item): if isinstance(item, list): return all(is_numeric(subitem) for subitem in item) return isinstance(item, (int, float, np.number))
内容的提问来源于stack exchange,提问作者Pete Howells
相关产品推荐
相关产品推荐

