【问题标题】:How to round every element in a list of lists? [duplicate]如何舍入列表列表中的每个元素? [复制]
【发布时间】:2018-08-15 08:05:40
【问题描述】:

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

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

【问题讨论】:

  • return 在函数执行后立即退出...

标签: python list


【解决方案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]]

这将创建一个临时函数,它将单个值四舍五入到小数点后 2 位。我们称这个函数为 func。现在我们想将此函数应用于列表中的每个列表,因此我们遍历外部列表并提取其中的每个列表。然后我们使用 ma​​p 函数将 func 应用到此列表中的每个元素。然后我们将地图可迭代对象转换为列表,我们就有了答案。


按照自己的方式做事

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

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

【讨论】:

    猜你喜欢
    • 2020-03-25
    • 2022-01-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-14
    • 2013-07-07
    • 2021-05-30
    • 2022-01-21
    相关资源
    最近更新 更多