【问题标题】:Change only zeros to integers in list of floats在浮点数列表中仅将零更改为整数
【发布时间】:2019-04-26 02:28:39
【问题描述】:

我的代码有这个输出

[0.0, 0.0, 0.25, 0.5, 1.0],

但我需要让它变成这样 -

[0, 0, 0.25, 0.5, 1.0]

关于如何将零更改为整数的任何提示?

【问题讨论】:

  • 但是为什么呢?
  • 您只想更改零,还是所有整数浮点数?
  • 请包括您迄今为止尝试过的内容,并详细解释哪些内容不起作用。最好通过描述预期和实际行为来完成。如果您的代码引发异常,请包含完整的错误跟踪。
  • 是的,只有0作为int

标签: python list types int


【解决方案1】:

这是一个有点奇怪的请求,但您可以根据具体情况进行操作,将所有零变为 ints:

>>> output = [0.0, 0.0, 0.25, 0.5, 1.0]
>>> [int(x) if not x else x for x in output]
[0, 0, 0.25, 0.5, 1.0]

列表理解与

相同
new_list=[]
for x in output:
    if x == 0:
        new_list.append(int(x))
    else:
        new_list.append(x)

for-loop 表单更容易在您需要调整的情况下制定更复杂的替换规则。

【讨论】:

    【解决方案2】:

    如果您想将所有零更改为整数,只需简单的列表推导即可。

    >>> lst = [0.0, 0.0, 0.25, 0.5, 1.0]
    >>> [x or 0 for x in lst]
    [0, 0, 0.25, 0.5, 1.0]
    

    当且仅当x == 0 然后表达式将被评估为0

    这是假设 lst 中没有其他虚假值,如空字符串或列表。

    【讨论】:

    • x or int(x) 实际上是x or 0
    • @bereal 而不是打高尔夫球,最好是明确的 IMO,列表中可能还有其他虚假值; [int(x) if x == 0 else x for x in lst]
    • @Chris_Rands 我认为我们可以假设该列表是同质的。如果你想进入特殊情况,我们还必须考虑评估等于 0.0 但不是浮点数 0.0. 的对象;)
    【解决方案3】:

    您可以通过列表理解简单地做到这一点:

    例子:

    如果我希望所有 小于 3 的数字都是 整数rest float ,那么我会这样做。

    myList = [1.1 , 2.7 , 7.8 ,8 ,8.9 ,3.2]
    myList = [ int(i) if i < 3 else i for i in myList ]
    print(myList)
    

    输出:

    [1, 2, 7.8, 8, 8.9, 3.2]
    

    您需要的代码是:

     myList = [0.0, 0.0, 0.25, 0.5, 1.0]
     myList = [int(i) if i == 0 else i for i in myList]
     print(myList)
    

    【讨论】:

      猜你喜欢
      • 2015-05-20
      • 1970-01-01
      • 1970-01-01
      • 2013-01-17
      • 2013-06-29
      • 1970-01-01
      • 2018-01-11
      • 1970-01-01
      • 2011-02-04
      相关资源
      最近更新 更多