首页 > 解决方案 > 在 Python3 中如何使用一些浮点数和 range() 进行映射

问题描述

我有以下代码:

circle_areas = [3.56773, 5.57668, 4.00914, 56.24241, 9.01344, 32.00013]
result = list(map(round, circle_areas, range(2, 7)))
print(result)

输出:

[3.57, 5.577, 4.0091, 56.24241, 9.01344]

但是,如果我将一个值传递给range()喜欢 result = list(map(round, circle_areas, range(2)))它的输出[4.0, 5.6]result = list(map(round, circle_areas, range(3)))它会输出[4.0, 5.6, 4.01]并继续。

我想知道为什么以及它是如何表现的。

标签: python-3.xdictionaryrange

解决方案


mapcircle_areas可以将多个可迭代对象(在您的情况下和生成器)中的连续对(三元组等)元素range映射到您正在映射的函数(只要您正在映射的函数接受该数量的参数 - 在您的情况下为 2) . 进行操作时:

result = list(map(round, circle_areas, range(2, 7)))

你得到的结果是一样的:

result = [round(ar, prec) for ar, prec in zip(circle_areas, range(2,7)]

因此,当您将范围生成器限制为range(2)(值 0->1)result时,将仅包括circle_areas连续舍入到 0 和 1 个小数位的第一个和第二个值。


推荐阅读