循环四舍五入

时间:2021-01-03 18:13:19

标签: python

我有一堆值需要舍入并转换为字符串。我认为最好的方法是将它们全部放在一个列表中,然后通过 for 循环运行该列表。这是一个 MRE,但它不起作用。

x = 2344.4444
y = 3666.3456
z = 89999.3224

LIST = [x,y,z]

for value in LIST:
   value = round(value, 1)
   value = "{:,}".format(value)
   value = str(value)

print(x)

输出未重新格式化。

2 个答案:

答案 0 :(得分:2)

我建议您创建一个新列表,而不是修改您已有的列表。在 Python 中执行此操作的最简洁方法是使用列表推导式。下面是一个示例,它使用您提供的主要逻辑执行您尝试执行的操作:

x = 2344.4444
y = 3666.3456
z = 89999.3224

my_list = [x,y,z]

my_new_list = ["{:,}".format(round(value, 1)) for value in my_list]

print(my_new_list)

结果:

['2,344.4', '3,666.3', '89,999.3']

请注意,我省略了对 str() 的调用。那个电话是多余的。字符串对象上的 format 方法返回一个字符串值。对该值调用 str() 对该值没有任何影响。

请注意,我将您的输入列表的名称从 LIST 更改为 my_list。全部大写的名称通常被理解为文字常量,并且类名称应始终以大写字母开头。变量名一般应以小写字母开头。

答案 1 :(得分:2)

使用 enumerate 获取索引和该索引的值。将值更改为字符串,然后保存到索引。

代码如下:

x = 2344.4444
y = 3666.3456
z = 89999.3224

list1 = [x,y,z]
list2 = []

for index, value in enumerate(list1):
    value = round(value, 1)
    value = "{:,}".format(value)
    list2.append(value)

x,y,z = list2

print(x,y,z)