【发布时间】:2021-09-30 00:18:33
【问题描述】:
考虑以下浮点值列表
aList = ['3.32', '1.08', '4.23']
如何使用列表推导对其进行舍入并获得以下[3.0, 1.0, 4.0]?
【问题讨论】:
标签: python list floating-point list-comprehension rounding
考虑以下浮点值列表
aList = ['3.32', '1.08', '4.23']
如何使用列表推导对其进行舍入并获得以下[3.0, 1.0, 4.0]?
【问题讨论】:
标签: python list floating-point list-comprehension rounding
使用内置函数 int() 非常简单。
aList = [3.32, 1.08, 4.23]
newList = []
for num in aList:
newList.append(int(num))
print(newList)
注意:您列表中的那些元素不是浮点数,而是字符串。
【讨论】:
我假设 aList 应该是 ['3.32', '1.08', '4.23'](最后缺少引号)。
您可以将字符串转换为浮点数,然后以 0 位精度四舍五入,如下所示:
newList = [round(float(n), 0) for n in aList]
结果:
[3.0, 1.0, 4.0]
【讨论】:
input_list = [3.32, 1.08, 4.23]
output_list = [round(x) for x in input_list]
【讨论】:
首先,你提到的aList
aList = ['3.32', '1.08', '4.23']
是字符串列表,而不是浮点数。
for i in aList:
print(type(i))
[Out]: <class 'str'>
<class 'str'>
<class 'str'>
浮点数列表如下
aList = [3.32, 1.08, 4.23]
for i in aList:
print(type(i))
[Out]: <class 'float'>
<class 'float'>
<class 'float'>
假设一个人拥有上述列表之一,则可以使用round()、float()(这将从数字或字符串返回一个浮点数——因此它适用于上述两种情况),和一个列表推导,如下
round_0 = [round(float(number), 0) for number in aList]
[Out]: [3.0, 1.0, 4.0]
对于浮动列表,也可以执行以下操作
aList = [3.32, 1.08, 4.23]
round_0 = [round(number, 0) for number in aList]
可能相关的替代案例
如果要四舍五入到小数点
round_1 = [round(float(number), 1) for number in aList]
[Out]: [3.3, 1.1, 4.2]
假设一个人只想要[3, 1, 4],下面就可以了
round0 = [round(float(number)) for number in aList]
[Out]: [3, 1, 4]
如果有一个包含大数字的列表并且想要在小数点左侧四舍五入,以下将完成工作
testlist = [98789.55, 38597.89, 65874.58]
round_2 = [round(float(number), -2) for number in testlist]
[Out]: [98800.0, 38600.0, 65900.0]
【讨论】: