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() 中,这样,最后我们就能得到处理完成后的列表了。

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

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

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 轻量级神经网络发展_宽度神经网络

    轻量级神经网络发展_宽度神经网络文章目录轻量级神经网络——shuffleNetshuffleNet1逐点分组卷积(Pointwisegroupconvolution)✨✨✨通道重排(channelshuffle)✨✨✨shuffleNetUnit✨✨✨shuffleNet1的网络结果和效果轻量级神经网络——shuffleNetshuffleNet1  在之前,已经讨论过一种轻量级神经网络——MobileNet,文中对MobileNet的三个版本都做了详细的介绍,读此篇之前,建议先了解MobileNet,特别是要对其中的深度可

    2025年10月9日
    4
  • 最新Eric Python IDE 安装方法Eric6_17.04.1 + PyQt5_5.8.2[通俗易懂]

    博主是一名新入Pyhton坑的技术小白,一直在寻找更适合自己的PythonIDE,语是准备尝试EricPythonIDE,但是网上找到的安装教程和当前最新版本不一样了,于是经过一番折腾,博主记录下了如何安装最新版本Eric617.04.1以及PyQt5.82。也希望通过本文能帮助到和博主一样的新手同学

    2022年4月14日
    166
  • 【转载】分布式数据库架构–分库、分表、排序、分页、分组、实现

    【转载】分布式数据库架构–分库、分表、排序、分页、分组、实现

    2021年11月21日
    41
  • 基于STM32F4单片机对步进电机的控制(有代码)「建议收藏」

    基于STM32F4单片机对步进电机的控制(有代码)「建议收藏」步进电机是将电脉冲控制信号转变为角位移或线位移的一种常用的数字控制执行元件,又称为脉冲电机。在驱动电源的作用下,步进电机受到脉冲的控制,其转子的角位移量和速度严格地与输入脉冲的数量和脉冲频率成正比。步进电机每接收一个电脉冲,转子就转过一个相应的角度(步距角)。改变通电顺序可改变步进电动机的旋转方向;改变通电频率可改变步进电动机的转速。因此,通过控制输入电脉冲的数目、频率及电动机绕组的通电顺序就可以…

    2022年5月6日
    52
  • .net core开发工具_Webshell

    .net core开发工具_Webshell没有爬虫就没有互联网!爬虫的意义在于采集大批量数据,然后基于此进行加工/分析,做更有意义的事情。谷歌,百度,今日头条,天眼查都离不开爬虫。去开源中国和Github查询C#的爬虫项目,仅有…

    2025年11月29日
    4
  • php怎么查看一个变量的占用内存

    php怎么查看一个变量的占用内存php怎么查看一个变量的占用内存

    2022年4月24日
    181

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

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