我有一个包含不规则单词和float
数字的列表,我想float
从列表中删除所有这些数字,但是首先我需要找到一种方法来检测它们。我知道str.isdigit()
可以区分数字,但不适用于float
数字。怎么做?
我的代码是这样的:
my_list = ['fun','3.25','4.222','cool','82.356','go','foo','255.224']
for i in my_list:
if i.isdigit() == True:
my_list.pop(i)
# Can't work, i.isdigit returns False
使用异常处理和列表理解。迭代时不要修改列表。
>>> def is_float(x):
... try:
... float(x)
... return True
... except ValueError:
... return False
>>> lis = ['fun','3.25','4.222','cool','82.356','go','foo','255.224']
>>> [x for x in lis if not is_float(x)]
['fun', 'cool', 'go', 'foo']
要修改同一列表对象,请使用切片分配:
>>> lis[:] = [x for x in lis if not is_float(x)]
>>> lis
['fun', 'cool', 'go', 'foo']
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句