【问题标题】:Python: get first number of every float in a listPython:获取列表中每个浮点数的第一个数字
【发布时间】:2017-08-25 03:46:18
【问题描述】:

这里是python初学者。如何转换

list = [2.4, 4.8532, 5.43253, 55.3838]

list = [2, 4, 5, 5]

谢谢。

【问题讨论】:

标签: python list


【解决方案1】:

您可以只使用int(),因为int() 总是将向下 舍入为0,这相当于将浮点数截断小数。注意:不要使用list 作为变量名,因为它已经是一个内置函数和类型。

lst = [2.4, 4.8532, 5.43253]
lst = [int(x) for x in lst]
print(lst)

输出:

[2, 4, 5]

【讨论】:

  • int() 四舍五入,如果要四舍五入,请改用round()
  • int() 不向下取整;它向 0 舍入(如您所说,“切小数”)。
  • 这假定值
  • 谢谢。如果值大于 10 怎么办?
  • int(str(x)[0]) if str(x)[0] != '-' else int(str(x)[1]) 可以更简洁地表示为int(str(x)[x<0])。或者你可以做int(str(abs(x))[0])
【解决方案2】:

您必须创建一个新列表,例如使用推导式。您可能想要获取每个元素的第一个数字,或者可能获取每个元素的底值:

>>> l = [2.4, 4.8532, 5.43253]
>>> l2 = [12.4, 374.8532, -505.43253]
>>> list(map(int, (i[0] for i in map(str, l))))
[2, 4, 5]
>>> list(map(int, l))
[2, 4, 5]
>>> list(map(int, (i[0] for i in map(str, l2))))
>>> [i[0] for i in map(str, l2)]
['1', '3', '-']
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: invalid literal for int() with base 10: '-'
>>> list(map(int, l2))
[12, 374, -505]

请注意,您需要更具体地了解有关列表内容的假设。数字可以大于 10 吗?他们可以是消极的吗?你想要负数的第一个数字还是第一个字符?如果总是0 &lt; number &lt; 10,你就不用担心了。

【讨论】:

    猜你喜欢
    • 2019-09-05
    • 2017-11-05
    • 1970-01-01
    • 2011-10-29
    • 1970-01-01
    • 1970-01-01
    • 2017-05-17
    • 2022-01-07
    • 1970-01-01
    相关资源
    最近更新 更多