我的目的是获得[[1.23,2.45],[2.35,9.87])
以下给出了一个单独的元素1.23
,为什么会这样呢?
b =[[1.234,2.454],[2.352,9.873]]
def get_round(x):
for i in x:
if type(i) ==list:
for each_i in i:
return round(each_i,2)
else:
return round(i,2)
get_round(b)
如何在不更改现有数据结构的情况下舍入每个元素?
答案 0 :(得分:1)
这是一个很好的pythonic方法来做到这一点
func = lambda x: round(x,2)
b =[[1.234,2.454],[2.352,9.873]]
b = [list(map(func, i)) for i in b]
print(b)
[[1.23,2.45],[2.35,9.87]]
这将创建一个临时函数,将单个值四舍五入到小数点后两位。我们将此函数称为 func 。现在我们要将此函数应用于列表中的每个列表,因此我们遍历外部列表并提取其中的每个列表。然后我们使用 map 函数将 func 应用于此列表中的每个元素。然后我们将map迭代对象转换为列表,我们得到了答案。
b =[[1.234,2.454],[2.352,9.873]]
def get_round(x):
temp = []
for i in x:
if type(i) ==list:
x = []
for each_i in i:
x.append(round(each_i,2))
temp.append(x)
else:
temp.append(round(i,2))
return temp
print(get_round(b))
在原始代码中,您太早回来了。您可以在列表列表中找到第一个数字,将其转换,然后返回。这可以追溯到我们从中调用函数的地方。