Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 3.x 将字符串转换为float并在列表中进行错误处理_Python 3.x_List_Loops_Exception_List Comprehension - Fatal编程技术网

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是的,但这能成为列表理解吗?我知道空字符串可以事先从列表中删除,如果这是唯一的方法的话。