我需要一些有关如何编写Python程序的建议,在其中它为您提供了列表格式的第一个N Perfect Squares的列表。输出应该看起来像这样:

How many squares?: 5  
[1, 4, 9, 16, 25]

这就是我到目前为止所拥有的:

n = int(raw_input("How many squares? "))

现在,对于下一部分,我需要创建第一个N正方形的列表。关于如何有什么建议?感谢您的时间和建议。

有帮助吗?

解决方案

使用列表理解:

[ a*a for a in xrange(1, n + 1) ]

其他提示

现在,对于下一部分,我需要开始创建第一个N正方形的列表。关于如何有什么建议?感谢您的时间和建议。

这是您可以帮助的。对于另一部分,发布您的算法。

使用范围生成列表:

>>> range(10)
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

使用列表理解获取x^2的列表

>>> [x**2 for x in range(10)]
[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
>>> 

Novikov提供了更优雅的答案

n = int(raw_input("How many squares? "))
map((2).__rpow__, range(1, n+1))

或者

from operator import mul
n = int(raw_input("How many squares? "))
map(mul, *[range(1, n+1)]*2)

有人提到了发电机 - 在这种情况下,这就是您使用它们的方式:

def sq(n):
    i=0
    while i<n:
        i+=1
        yield i*i

if __name__=="__main__":
    n = int(raw_input("How many squares? "))
    print list(sq(n))

或使用地图和lambda功能

n = int(raw_input("How many squares? "))
map(lambda x: x*x, range(n))

如果您想从1开始

map(lambda x: x*x, range(1, n+1))

代码:

list_squares=[]
for a in xrange(1, n+1):
 list_squares.append(a*a)
print list_squares

其中n是他想要的正方形数量的用户输入。

如果 n=5 然后输出看起来像:

[1, 4, 9, 16, 25]
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top