【问题标题】:Python changing order of a list when I change the formatting当我更改格式时,Python 更改列表的顺序
【发布时间】:2020-12-11 09:08:45
【问题描述】:

我正在尝试将列表中所有项目的格式从浮点数更改为整数。我的代码似乎可以完成这项工作,但它正在改变列表中项目的顺序。

一个可重现的例子:

l = [-1.0, 0.0, 1.0]
[int(f'{float(l[int(i)]):g}') for i in l]

>>> Out: [1, -1, 0]

知道如何避免这些元素的重新排列吗?

谢谢。

【问题讨论】:

  • 它是因为您正在使用值索引列表,l[int(i)]
  • 为什么不直接使用[int(i) for i in l]
  • i 不返回 0,1,2 它返回 -1,0,1 因此你的列表中会有 1,-1,0
  • 感谢您的回复。我正在编写一个适用于许多情况的通用脚本。自从我访问此脚本以来已经有一段时间了,并且忘记了为什么要添加这种复杂性。你能想到任何简单的地图/基本列表理解解决方案不起作用的情况吗?

标签: python list format integer decimal


【解决方案1】:

l[int(i)])

l = [-1.0, 0.0, 1.0]
o = list(map(int, l))
print(o)

输出:

[-1, 0, 1]

【讨论】:

    【解决方案2】:

    你想多了,干吧:

    l = [-1.0, 0.0, 1.0]
    [int(i) for i in l]
    

    【讨论】:

      【解决方案3】:

      您可以同时使用理解列表和函数式编程:

      l = [-1.0, 0.0, 1.0]
      result1 = [int(i) for i in l]
      result2 = list(map(int, l))
      

      【讨论】:

        猜你喜欢
        • 2011-07-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-06-17
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多