删除列表中不包含有效浮点数的所有元素

时间:2015-10-22 19:54:08

标签: python list python-2.7

如果给出了字符串类型数据的列表,例如,如果列表x包含以下内容:

x = ['98.7','100.5','%','','12.33','&','10']

如何从列表中删除非%''10&等非浮点元素?另外,我如何删除NoneType元素?

2 个答案:

答案 0 :(得分:0)

一种方法,几乎​​绝对不是最好的方式:

def is_float_string(string):
    try:
        float(string)
    except ValueError:
        return False
    return str(float(string)) == string

[ i for i in x if is_float_string(i) ]

#['98.7', '100.5', '12.33']

答案 1 :(得分:0)

有很多方法可以做到这一点,但以下方式是我第一次想到的方式:

>>> x = ['98.7','100.5','%','','12.33','&','10']
>>> y = [i for i in x if i.strip('0123456789') == '.']
>>> y
['98.7', '100.5', '12.33']

感谢 Padraic Cunningham adivk 的评论。我承认我的答案并不完美,但这种问题总是依赖于你真正的清单包含了什么。我修改了它,现在它更普遍。但是,对于实际使用,可能仍需要修改它。

y = [i for i in x if i and i != '.' and i.strip('0123456789') in ['.', '-.']]
相关问题