代码之家  ›  专栏  ›  技术社区  ›  SH_IQ

我怎样才能得到列表中每个元素的立方?

  •  -1
  • SH_IQ  · 技术社区  · 5 年前

    我正在使用一个匿名函数,我需要调用匿名函数中的一个普通函数来立方化列表中的每个元素。我怎样才能纠正下面的错误?

    list1 = [2,3,4,5,6,7,8,9]
    
    def cubic(n):
        return n*n*n
    
    f = list(map(cubic(n),list1))
    
    3 回复  |  直到 5 年前
        1
  •  3
  •   Joseph Sible-Reinstate Monica    5 年前

    你的尝试很接近。你想通过 cubic 函数作为一级值 map ,而不是调用它,因此替换 map(cubic(n),list1) 具有 map(cubic,list1) .

        2
  •  1
  •   Jack Taylor    5 年前

    map 会打电话的 cubic 对你来说,所以你不应该用括号。试试这个:

    list1 = [2,3,4,5,6,7,8,9]
    
    def cubic(n):
        return n**3
    
    cubed_list = list(map(cubic, list1))
    print(cubed_list)  # [8, 27, 64, 125, 216, 343, 512, 729]
    

    或者,你可以使用列表理解。

    list1 = [2,3,4,5,6,7,8,9]
    cubed_list = [n**3 for n in list1]
    print(cubed_list)  # [8, 27, 64, 125, 216, 343, 512, 729]
    
        3
  •  0
  •   sconfluentus    5 年前

    对于一个列表,您甚至不需要构建一个函数来实现这一点。您可以将列表传递到列表理解中:

    [x**3 for x in list1]
    

    这将返回一个列表,其中包含前一个列表立方中的每个值!超棒的小交易。如果您需要对每个值应用更复杂的计算,并在理解中使用您的函数:

    [your_function(x) for x in list1]