【问题标题】:How to convert float list to string list in python如何在python中将浮点列表转换为字符串列表
【发布时间】:2017-07-31 22:09:13
【问题描述】:

我有一个包含这些浮点数的列表:35.1、35.2、35.10、...

当我将这个浮点数列表转换为另一个字符串列表时,35.10 将是 35.1。

这是我的例子:

a = [35.1,35.2,35.3,35.10,35.2,35.3]
str_a = [format(flt) for flt in a] 
print str_a
['35.1', '35.2', '35.3','35.1', '35.2', '35.3']

我该如何解决这个问题?在我的工作中,35.1 和 35.10 这两个数字是不同的

【问题讨论】:

  • 以及 35.1 和 35.10 有何不同?
  • 当您创建a 时,35.10 将立即转换为35.1。所以在创建a 时必须使用字符串
  • 如果这些代表浮点数,那么 35.10 与 35.1 相同 与 35.100000 相同。如果它们代表其他东西(如major.minor 版本或书籍chapter.verse),那么您可能希望按此顺序对35.1、35.2、... 35.9、35.10、35.11 进行排序。
  • 公平地说,它们可能会转换为 35.0999999...5 或 35.1000000000.....5
  • 感谢您的回复,这些浮点数代表我网络中数据包的 ID,因此 35.1 和 35.10 是节点 35 生成的不同数据包。所以我的列表 a = [35.1,35.2,35.3 ,35.10,35.2,35.3] 不同目的地收到的所有数据包,所以我需要知道收到的数据包总数如何,通常列表 a 的结果为 4,因为数据包 35.2 和 35.3 被接收了两次,所以我没有数他们。我的主要问题结果给出了 3,因为它认为 35.10 是相同的数据包 35.1。请问有办法解决这个问题吗?

标签: python python-2.7


【解决方案1】:

鉴于原始问题,这是不可能的。浮点数没有固定的小数位数(因此称为“浮点数”!)。在创建浮动列表之前,您需要提前执行此操作。

【讨论】:

    【解决方案2】:

    或许你可以试试:

    a = [35.1,35.2,35.3,35.10,35.2,35.3]
    map(lambda x: '%.2f' % x, a)
    

    给你:

    ['35.10', '35.20', '35.30', '35.10', '35.20', '35.30']
    

    【讨论】:

    • @Mitch 35.1 -> '35.10'
    • @Mitch OP 仍然存在无法区分 35.135.10 的问题
    • 哦,哈哈,我没有看到他们认真地将这些视为不同的数字。
    • 感谢您的回复,这些浮点数代表我网络中数据包的 ID,因此 35.1 和 35.10 是节点 35 生成的不同数据包。所以我的列表 a = [35.1,35.2,35.3 ,35.10,35.2,35.3] 不同目的地收到的所有数据包,所以我需要知道收到的数据包总数如何,通常列表 a 的结果为 4,因为数据包 35.2 和 35.3 被接收了两次,所以我没有数他们。我的主要问题结果给出了 3,因为它认为 35.10 是相同的数据包 35.1。请问有办法解决这个问题吗?
    【解决方案3】:

    我认为这无法区分 35.1 和 35.10

    >>> 35.1 == 35.10
    True
    

    【讨论】:

    • 感谢您的回复,这些浮点数代表我网络中数据包的 ID,因此 35.1 和 35.10 是节点 35 生成的不同数据包。所以我的列表 a = [35.1,35.2,35.3 ,35.10,35.2,35.3] 不同目的地收到的所有数据包,所以我需要知道收到的数据包总数如何,通常列表 a 的结果为 4,因为数据包 35.2 和 35.3 被接收了两次,所以我没有数他们。我的主要问题结果给出了 3,因为它认为 35.10 是相同的数据包 35.1。请问有办法解决这个问题吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-31
    • 1970-01-01
    • 1970-01-01
    • 2021-10-16
    • 2017-09-26
    相关资源
    最近更新 更多