从包含字符串和数字混合的列表中删除所有字符串

时间:2016-03-31 08:21:54

标签: python list

我有一个包含字符串和数字混合的列表,例如

old_list = [23, 35, string, 42, string]

我希望列表看起来像这样

new_list = [23,35,45]

有一种简单的方法吗?

2 个答案:

答案 0 :(得分:6)

使用列表推导过滤类型:

new_list = [value for value in old_list if isinstance(value, int)]

这会选择只是整数。如果您需要支持任意数字(浮点数,复数,decimal.Decimal个实例),请使用numbers.Number abstract type

from numbers import Number

new_list = [value for value in old_list if isinstance(value, Number)]

如果只需要一个子集,你也可以给isintance()一个类型的元组进行测试;例如:

new_list = [value for value in old_list if isinstance(value, (int, float))]

将过滤整数和浮点值。

答案 1 :(得分:2)

除了已经提到的理解之外,你可以考虑内置的过滤功能:

new_list = filter(lambda x: isinstance(x, int), old_list)