我有一堆值需要舍入并转换为字符串。我认为最好的方法是将它们全部放在一个列表中,然后通过 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)
输出未重新格式化。
答案 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)