我有一个包含字符串和数字混合的列表,例如
old_list = [23, 35, string, 42, string]
我希望列表看起来像这样
new_list = [23,35,45]
有一种简单的方法吗?
答案 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)