舍入和更新列表中的元素
round and update elements in a list
我有一个列表 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
这样做:
for i,j in enumerate (lats):
lats[i] = round(j, 3)
错误如下。
列表的元素是浮点数。因此,当您对其进行迭代时,i
等于该列表中的一个值。列表索引只能用整数来完成。 lats[i]
正在替换引发错误的浮点值
如果你这样做 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)
错误说明一切 -
TypeError: list indices must be integers or slices, not float
问题出在你的for循环中-
for i in lats:
这样做是在每次迭代中获取 lats 中的每个元素,因此问题是您实际上是在尝试做 -
lats[48.16821784360847] = round(i, 3)
因此,你需要做 -
for i in range(len(lats)):
在你的解决方案中,我是纬度而不是它的索引。因此错误
列出补偿
lats[:] = [round(lat, 3) for lat in lats]
地图
lats[:] = map(lambda x: round(x, 3), lats)
lats[:] = map(lambda x: x.__round__(3), lats)
我有一个列表 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
这样做:
for i,j in enumerate (lats):
lats[i] = round(j, 3)
错误如下。
列表的元素是浮点数。因此,当您对其进行迭代时,i
等于该列表中的一个值。列表索引只能用整数来完成。 lats[i]
正在替换引发错误的浮点值
如果你这样做 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)
错误说明一切 -
TypeError: list indices must be integers or slices, not float
问题出在你的for循环中-
for i in lats:
这样做是在每次迭代中获取 lats 中的每个元素,因此问题是您实际上是在尝试做 -
lats[48.16821784360847] = round(i, 3)
因此,你需要做 -
for i in range(len(lats)):
在你的解决方案中,我是纬度而不是它的索引。因此错误
列出补偿
lats[:] = [round(lat, 3) for lat in lats]
地图
lats[:] = map(lambda x: round(x, 3), lats)
lats[:] = map(lambda x: x.__round__(3), lats)