python如何将列表中的每个数字都保留两位有效数字

本文介绍了一种使用Python处理列表中数字的方法,通过将列表转换为numpy数组,实现对每个元素保留两位有效数字的操作。此外,还提供了两种不同的方法来保留小数点后两位或保留两位有效数字。

如何将list中的每个数字都保留两位有效数字

旧版:

关键:首先,将list转为numpy数组,然后对numpy进行操作,最后对操作完成的numpy再转为数组。直接附代码

list_ori = list(pixel_real_recognition_value)  #原始列表
mid_np = np.array(list_ori)                    #列表转数组
mid_np_2f = np.round(mid_np,2)                 #对数组中的元素保留两位小数
list_new = list(mid_np_2f)                     #数组转列表
print(list_ori)
print(list_new)

原始列表:
在这里插入图片描述
保留两位小数后的列表:
在这里插入图片描述

改正(保留小数点后两位和保留两位有效数字)

test_list = [0.2356789489,1.21564316,112.261163156]

# 保留小数点后两位小数
test_one = [round(x,2) for x in test_list]
print("保留小数点后两位",test_one)

test_two = [float(format(x, '.2g')) for x in test_list]
print("保留两位有效数字",test_two)
# 保留两位有效数字
### 如何在Python中将列表里的所有浮点数格式化为保留两位小数 对于给定的任务,可以创建一个函数 `format_list` 来遍历列表并应用字符串格式化方法来确保每个浮点数值都只显示两位小数。以下是具体的实现方式: ```python def format_list(floats): return ["{:.2f}".format(x) for x in floats] # 示例使用 float_numbers = [1.1234, 2.98765, 3.456789, 4.0001] formatted_numbers = format_list(float_numbers) print(formatted_numbers) # 输出: ['1.12', '2.99', '3.46', '4.00'] ``` 上述代码通过列表推导式和内置的字符串格式化功能实现了这一目标[^1]。 另外一种方法是利用 Python 的 `round()` 函数配合列表解析一起工作,这同样能达成目的: ```python def round_list(floats): return [round(x, 2) for x in floats] # 示例使用 float_numbers = [1.1234, 2.98765, 3.456789, 4.0001] rounded_numbers = round_list(float_numbers) print(rounded_numbers) # 输出: [1.12, 2.99, 3.46, 4.0] ``` 这里需要注意的是,虽然两种方法都能达到预期效果,但是它们之间存在细微差别:前者返回的是由字符串组成的列表而后者则是浮点数组成的列表[^3]。 如果想要更灵活地处理可能存在的异常情况(比如输入不是有效的数字),可以在定义函数时加入错误捕捉机制,就像下面这样展示的例子一样[^4]: ```python def safe_format_list(values): result = [] for value in values: try: formatted_value = "{:.2f}".format(float(value)) result.append(formatted_value) except (ValueError, TypeError): result.append('Invalid') return result # 示例使用 mixed_values = [1.1234, 'apple', None, 3.456789, 'banana', 4.0001] safe_formatted = safe_format_list(mixed_values) print(safe_formatted) # 输出: ['1.12', 'Invalid', 'Invalid', '3.46', 'Invalid', '4.00'] ``` 此版本不仅能够处理标准的浮点数,还能优雅地应对非数字类型的元素,提供更加健壮的数据处理能力。
评论 6
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值