Python 将字符串数组转换为数字
我有一个Python 将字符串数组转换为数字,python,Python,我有一个数组=[“3”、“5”、“3”、“1”]。如何将python中除“”以外的所有内容转换为数字?在一行中必须为None 我尝试过这样的方法:[float(num)for num in array if num!=“num”,但是跳过了它。”列表中for语句右侧的是一个过滤器表达式 无论发生什么,您都希望发出一个值,因此您不需要过滤器,而是需要一个三元表达式: (您可以省略num!=”,因为num是一个字符串,而不是一个浮点或整数,所以它是等效的且更短) 其结果是: [3.0, 5.0, 3
数组=[“3”、“5”、“3”、“1”]
。如何将python中除“”以外的所有内容转换为数字?在一行中必须为None
我尝试过这样的方法:
[float(num)for num in array if num!=“num”
,但是跳过了它。”列表中for
语句右侧的是一个过滤器表达式
无论发生什么,您都希望发出一个值,因此您不需要过滤器,而是需要一个三元表达式:
(您可以省略num!=”
,因为num
是一个字符串,而不是一个浮点或整数,所以它是等效的且更短)
其结果是:
[3.0, 5.0, 3.0, None, 1.0]
简单列表理解:
num_list = [float(e) if e else None for e in map(lambda x: x.strip(), array)]
在转换之前,我们去掉字符串,这样就没有前导或尾随空格了
这将把“”映射到“”,然后可以使用进行检查,如果您可以尝试以下操作:
array = ["3", "5", "3", "", "1"]
final_list = [int(i) if i else None for i in array]
输出:
[3, 5, 3, None, 1]
我不确定您是否希望“
等于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]
[float(num)if num!=“else None for num in array]
哦,我很笨,非常感谢:)也可以是if num
,而无需严格检查空字符串。@CasualDemon是的,因为输入不是字符串。没错。不是DVer,但它不会像OP那样用None
替换空字符串requested@Wondercricket编辑。非常感谢。
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]