Python 3.x 将字符串转换为float并在列表中进行错误处理
考虑以下列表:Python 3.x 将字符串转换为float并在列表中进行错误处理,python-3.x,list,loops,exception,list-comprehension,Python 3.x,List,Loops,Exception,List Comprehension,考虑以下列表: list1=['1.1','1.2',['2.1','2.2',[''],…] 此列表包含带空字符串的列表。要将此列表中的所有字符串转换为浮动,可以使用列表理解,例如: [[float(j) for j in i] for i in list1] (谢谢) 但包含空字符串的列表有一个问题-它们会导致异常: ValueError:无法将字符串转换为浮点: 有没有一种方法可以在不显式使用循环的情况下使用这种列表理解?在内部列表理解中使用if条件忽略空字符串: [[float(j)
list1=['1.1','1.2',['2.1','2.2',[''],…]
此列表包含带空字符串的列表。要将此列表中的所有字符串转换为浮动,可以使用列表理解,例如:
[[float(j) for j in i] for i in list1]
(谢谢)
但包含空字符串的列表有一个问题-它们会导致异常:
ValueError:无法将字符串转换为浮点:
有没有一种方法可以在不显式使用循环的情况下使用这种列表理解?在内部列表理解中使用
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]
如果列表实际上为空,则不会出现错误。你没有在这里描绘完整的画面。@cs95你是对的,“空”列表实际上包含空字符串,我将编辑我的帖子。那么可以忽略空字符串吗?@Pynchia t是前者,如果我正确理解了你的问题。@cs95是的,但这能成为列表理解吗?我知道空字符串可以事先从列表中删除,如果这是唯一的方法的话。