如何舍入列表列表中的每个元素?

时间:2018-03-07 09:22:43

标签: python list

我的目的是获得[[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)   

如何在不更改现有数据结构的情况下舍入每个元素?

1 个答案:

答案 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))

在原始代码中,您太早回来了。您可以在列表列表中找到第一个数字,将其转换,然后返回。这可以追溯到我们从中调用函数的地方。