请考虑以下列表列表:
list1 = [['1.1','1.2'],['2.1', '2.2'],[''],...]
此列表包含带有空字符串的列表。要将列表中的所有字符串转换为浮点数,可以使用列表理解,例如:
[[float(j) for j in i] for i in list1]
(感谢to)。
但是包含空字符串的列表存在一个问题-它们会导致异常:
ValueError:无法将字符串转换为float:
是否有一种无需明确使用循环就可以使用这种列表理解的方法?
答案 0 :(得分:1)
在内部列表推导内使用if
条件来忽略空字符串:
[[float(j) for j in i if i] for i in list1]
if i
将测试字符串的“真实性”。对于空字符串,这只会返回False,因此它们将被忽略。
或者,如果您想对其进行更完善的处理,请使用函数来执行带有异常处理的转换:
def try_convert(val):
try:
return float(val)
except ValueError, TypeError:
pass
[[float(z) for z in (try_convert(j) for j in i) if z] for i in list1]