Python 列表元素字符串转浮点

Python 列表元素字符串转浮点在网络爬虫或者读取文件中的数据时,很多时候读取出来的数值是字符串形式的,这些字符串形式的数据并不能用来作计算或者更深入的操作,因此我们需要把他们转换为数值的形式。简单粗暴的for循环假设,这里有一个以字符串形式存储数值的列表,具体如下:a=[‘2′,’3.5′,’10’,’88’,’32.66′]我们需要将其转换为浮点的形式,最简单粗暴直接的方法,可以使用…

大家好,又见面了,我是你们的朋友全栈君。

在网络爬虫或者读取文件中的数据时,很多时候读取出来的数值是字符串形式的,这些字符串形式的数据并不能用来作计算或者更深入的操作,因此我们需要把他们转换为数值的形式。

简单粗暴的 for 循环

假设,这里有一个以字符串形式存储数值的列表,具体如下:

a = ['2', '3.5', '10', '88', '32.66']

我们需要将其转换为浮点的形式,最简单粗暴直接的方法,可以使用 for 循环 来处理,方法如下:

a_float = []
for num in a:
    a_float.append(float(num))

a_float
>> [2.0, 3.5, 10.0, 88.0, 32.66]

我们通过 for 循环, 把列表中的每一个数值都用 float() 函数将其转换成浮点的形式,然后再将转换后的值添加到一个新列表中,最终我们即可得到一个浮点值得列表。

更优雅的 map() 方法

如果我们每次都需要写一个 for 循环,这样一来显得不优雅,二来代码看起来也很冗长。我们也可以使用 map() 方法来处理。具体代码如下:

a_float_m = map(float, a)
a_float_m
>> <map at 0x109854da0>
a_float_m = list(a_float_m)
[2.0, 3.5, 10.0, 88.0, 32.66]

和刚才的 for 循环 对比,我们使用 map() 方法,只需要一行代码就可以完成。这里有一点需要注意,在 Python2 中,map() 返回的是列表,而在 Python3 中,返回的是迭代器。因此,我们这里如果想得到一个列表,我们还需要使用以下 list()

意外的处理

很多时候,我们的原始数据未必是那么完美,假如我们原始的列表中,有一些不能转换的数据,那情况将如何?接下来,我们对 a 列表进行一些改造。

a.append('a')
a
>> ['2', '3.5', '10', '88', '32.66', 'a']

接下来,我们还是对 a 使用 map() 方法:

a_float_new = list(map(float, a))
>> ValueError: could not convert string to float: 'a'

这时,我们的程序就报错了,因为字符串不能转成浮点数值。如果我们还希望继续完成这个转换,我们就需要对改造一下处理的函数,具体代码如下:

def safe_float(number):
    try:
        return float(number)
    except:
        return None

a_float_new = list(map(safe_float, a))
a_float_new
>> [2.0, 3.5, 10.0, 88.0, 32.66, None]

我们先约定好,将不能转换的值保存为 None,然后编写了一个 safe_float() 的方法进行处理,随后再将这个函数传到 map() 中,这样,最后我们就能得到处理完成后的列表了。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/137841.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • Ubuntu 安装Jdk1.8「建议收藏」

    Ubuntu 安装Jdk1.8「建议收藏」1、下载安装包Oracle官网下载Jdk1.8Linux环境安装包,传送门:Oracle官网Jdk1.8安装包下载地址图示如下:2、环境配置将安装包上传到Ubuntu系统的/usr/local/programs/java/目录下,如果目录不存在,命令如下:$mkdir-p/usr/local/programs/java/解压缩,命令如下:…

  • 工业大数据漫谈5:工业大数据案例(上)

    工业大数据漫谈5:工业大数据案例(上)今天,整理了一些工业大数据的相关案例,看看各家企业是如何成功实施工业大数据的。    1、能够实现全生产过程的信息透明化的案例    通过采用集成自动化与驱动解决方案,能够显著提高生产效率和灵活性。原东德玻璃制造商f|glass就是一个很好的实例。它的工厂可以算得上是全世界最先进、最节能的工厂之一了。该工厂采用了一套集成自动化解决方案、一个先进的能源管理系统以及一个创新

  • 微信小程序实现每日签到功能的方法_小程序签到功能

    微信小程序实现每日签到功能的方法_小程序签到功能微信小程序实现每日签到功能

    2022年10月27日
  • cglib动态代理实现原理_jdk cglib 动态代理 区别

    cglib动态代理实现原理_jdk cglib 动态代理 区别cglib动态代理详解我们都知道jdk的动态代理内部调用切面无效的问题,而cglib则不会出现这种情况,这是为什么?cglib就一定不会出现内部调用切面无效的问题吗?cglib针对每一个类只创建了一个代理类吗?为什么cglib的效率要比jdk的动态代理低呢?首先我们看一下通常我们是如何使用cglib增强一个类的publicclassMain{staticclassTest{publicvoidtest(){System.out.pr

    2022年10月21日
  • python运维和开发实战-高级篇

    python运维和开发实战-高级篇python运维和开发实战-高级篇python运维和开发实战-高级篇课程链接如下:通过如下链接地址购买课程可享受2.5折优惠哈,时间有限~????https://edu.51cto.co…

  • 全球首款AI芯片_全球AI五强

    全球首款AI芯片_全球AI五强前言你一定听说过CPU、GPU,但是TPU、VPU、NPU、XPU…等等其他字母开头的“xPU”呢?AI概念在几年前火爆全球,科技巨头们纷纷投入AI芯片的研发,小公司也致力于提出概念靠AI浪潮融资,为了快速在AI市场上立足,也为了让市场和用户能记住自家的产品,各家在芯片命名方面都下了点功夫,既要独特,又要和公司产品契合,还要朗朗上口,也要容易让人记住。前文所提到的“xPU”的命名方式就深受各大厂商的喜爱。本文就从字母A到Z来盘点一下目前各种“xPU”命名AI芯片,以及芯片行业里的各种“xPU

    2022年10月28日

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号