我有array = ["3", "5", "3", "", "1"]
。除了""如何将数字转换成数字。在python中一行必须是None?
我尝试过这样的事情:[float(num) for num in array if num != ""]
但跳过了#34;"。
答案 0 :(得分:3)
列表推导中for
语句右侧的内容是过滤器表达式。
你想发布一个值,不管是什么,所以你不想要一个过滤器,你想要一个三元表达式:
[float(num) if num else None for num in array]
(你可以省略num != ""
,因为num
是一个字符串,而不是一个浮点数或整数,所以它等价且更短)
导致:
[3.0, 5.0, 3.0, None, 1.0]
答案 1 :(得分:0)
简单列表理解:
num_list = [float(e) if e else None for e in map(lambda x: x.strip(), array)]
在转换之前,我们剥离字符串,使其没有前导或尾随空格。
这会将“”映射到“”,然后可以使用if
检查。
答案 2 :(得分:0)
你可以试试这个:
array = ["3", "5", "3", "", "1"]
final_list = [int(i) if i else None for i in array]
输出:
[3, 5, 3, None, 1]
答案 3 :(得分:0)
我不确定您是否希望""
等于None
。
如果你想放弃""
,那么:
array = ["3", "5", "3", "", "1"]
print [float(x) for x in array if x]
// result: [3.0, 5.0, 3.0, 1.0]
如果您想将""
替换为None
:
array = ["3", "5", "3", "", "1"]
print [float(x) if x else None for x in array]
// result: [3.0, 5.0, 3.0, None, 1.0]