在Python中提取列表中的数字可以通过多种方法实现,最常用的包括列表推导式、filter()函数结合lambda表达式、正则表达式以及isinstance()类型判断。这些方法各有优劣,适用于不同场景,如处理混合类型列表或字符串中的数字提取。
-
列表推导式
使用[x for x in lst if isinstance(x, (int, float))]
可快速筛选数字。优点是代码简洁,适合纯数字或简单混合列表;缺点是无法处理字符串中的数字(如'123'
)。 -
filter()与lambda
通过list(filter(lambda x: isinstance(x, (int, float)), lst))
实现。函数式风格更明显,适合链式操作,但可读性略低于列表推导式。 -
正则表达式
若列表包含字符串(如['a', '1', 2]
),可用re.findall(r'\d+', str(lst))
提取所有数字字符。需注意结果均为字符串类型,需额外转换为数值。 -
isinstance()扩展应用
结合type()
或numbers.Number
可识别更复杂的数值类型(如numpy.int32
),适用于科学计算场景。
提示:若需保留原列表顺序或处理嵌套结构(如[[1], '2', 3]
),建议递归遍历或结合try-except
块进行类型转换。根据数据特点选择方法能显著提升效率。