【问题标题】:List of squares in python [duplicate]python中的正方形列表[重复]
【发布时间】:2019-11-22 00:51:20
【问题描述】:

我需要写一个前n个平方数的函数,平方序列以1、4、9、16、25开头。

例如如果输入为16,则输出为

[1, 4, 9, 16, 25, 36, 49, 64, 81, 100, 121, 144, 169, 196, 225, 256] 

这段代码是我尝试过的,但它完全错误。此代码将我的号码从 1 计数到 255。我不知道要修复什么

def squares(n):
    L = list(range(n**2))
    L = [num for num in L if num]
    return L

【问题讨论】:

    标签: python list


    【解决方案1】:

    使用列表理解:

    def squares(n):
        L = [i*i for i in range(1,n+1)]
        return L
    
    print (squares(16))
    

    输出:

    [1, 4, 9, 16, 25, 36, 49, 64, 81, 100, 121, 144, 169, 196, 225, 256]
    

    【讨论】:

      【解决方案2】:

      通过使用列表推导

      l=[x*x for x in range(1,n+1)]
      

      【讨论】:

        【解决方案3】:
        def squares(n):
               L = []
               for num in range(1,n+1):
                   val = num*num 
                   L.append(val)
               return L
        print(squares(16))
        

        输出

        [1, 4, 9, 16, 25, 36, 49, 64, 81, 100, 121, 144, 169, 196, 225, 256]
        

        【讨论】:

          【解决方案4】:

          这是另一种方法:

          def squares(n):
              return list(map(lambda k:k**2, range(1,n+1)))
          

          【讨论】:

            【解决方案5】:

            您的主要问题是您错误地使用了范围,您在 (n**2) 上使用了范围而不是 n。这意味着您将获得从 1^2 到 16^2 的值,其中的每个整数。正如您通过其他人以前的答案所看到的那样,没有使用范围。但是,如果您确实想使用它,这应该可以工作

            def squares(n):
               L = list(range(n+1))
               L = [num**2 for num in L if num]
               return L
            print(squares(16))
            

            这将提供您想要的输出

            希望这能回答你的问题。

            【讨论】:

            • 但是我不建议这样做,因为还有其他更简洁、更紧凑的解决方案。
            【解决方案6】:

            为此,您可以使用一个函数,其中包含一个列表推导式。它的作用是接受参数 n,并通过使用列表推导中的 for 循环返回每个数字的平方,直到并包括 n(因为范围中有 n+1 项)。

            def list_of_squares(n):
                return [i**2 for i in range(1,n+1)]
            

            例如,print(list_of_squares(10)) 将打印前 10 个方格。

            [1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
            

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2017-02-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2018-04-26
              • 1970-01-01
              相关资源
              最近更新 更多