【发布时间】:2017-08-25 03:46:18
【问题描述】:
这里是python初学者。如何转换
list = [2.4, 4.8532, 5.43253, 55.3838]
到
list = [2, 4, 5, 5]
谢谢。
【问题讨论】:
这里是python初学者。如何转换
list = [2.4, 4.8532, 5.43253, 55.3838]
到
list = [2, 4, 5, 5]
谢谢。
【问题讨论】:
您可以只使用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 舍入(如您所说,“切小数”)。
int(str(x)[0]) if str(x)[0] != '-' else int(str(x)[1]) 可以更简洁地表示为int(str(x)[x<0])。或者你可以做int(str(abs(x))[0])。
您必须创建一个新列表,例如使用推导式。您可能想要获取每个元素的第一个数字,或者可能获取每个元素的底值:
>>> 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 < number < 10,你就不用担心了。
【讨论】: