对列表中的元素进行舍入和更新

2024-04-29 17:21:30 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个列表lats,其中每个元素如下所示:

48.16821784360847
48.1684475413586
48.16839850451211

我希望遍历整个列表,并更新列表,使每个项目四舍五入到小数点后3位。例如,新列表应为:

48.168
48.168
48.168

我正在尝试:

for i in lats:
    lats[i] = round(i, 3)

但它抛出了一个错误:

TypeError: list indices must be integers or slices, not float


Tags: 项目integersin元素列表for错误be
3条回答

这样做:

for i,j in enumerate (lats):
    lats[i] = round(j, 3)

错误如下。 列表的元素是浮点数。因此,当您对它进行迭代时,i等于该列表中的一个值。列表索引只能使用整数lats[i]正在替换引发错误的浮点值

这一错误不言而喻——

TypeError: list indices must be integers or slices, not float

问题在您的for循环中-

for i in lats:

这样做的目的是在每次迭代中获取LAT中的每个元素,因此问题在于您实际上正在尝试执行-

lats[48.16821784360847] = round(i, 3)

因此,你需要做-

for i in range(len(lats)):

如果您这样做for i in lats:i将是数字(如48.16821784360847)。如果使用for i in range(len(lats)):,则i将是0,1,2,依此类推

这将有助于:

for i in range(len(lats)):
    lats[i] = round(lats[i], 3)
print(lats)

相关问题 更多 >