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

-5 python list

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

old_list = [23, 35, string, 42, string]
Run Code Online (Sandbox Code Playgroud)

我希望列表看起来像这样

new_list = [23,35,45]
Run Code Online (Sandbox Code Playgroud)

有一个简单的方法吗?

Mar*_*ers 6

使用列表推导来过滤类型:

new_list = [value for value in old_list if isinstance(value, int)]
Run Code Online (Sandbox Code Playgroud)

只是整数.如果需要支持任意数字(浮点数,复数,decimal.Decimal实例),请使用numbers.Number抽象类型:

from numbers import Number

new_list = [value for value in old_list if isinstance(value, Number)]
Run Code Online (Sandbox Code Playgroud)

isintance()如果只需要一个子集,您还可以给出要测试的元组元组; 例如:

new_list = [value for value in old_list if isinstance(value, (int, float))]
Run Code Online (Sandbox Code Playgroud)

将过滤整数和浮点值.