我需要一些关于如何编写Python程序的建议,它给出了列表格式中前n个完美正方形的列表。输出应如下所示:
How many squares?: 5 [1, 4, 9, 16, 25]
这是我到目前为止所做的:
n = int(raw_input("How many squares? "))
现在,对于下一部分,我需要创建前n个方块的列表。有关如何的任何建议?感谢您的时间和建议。
答案 0 :(得分:10)
使用列表理解:
[ a*a for a in xrange(1, n + 1) ]
答案 1 :(得分:4)
现在,对于下一部分,我需要开始创建前n个方块的列表。有关如何的任何建议?感谢您的时间和建议。
这是你可以得到帮助的东西。对于其他部分,请发布您的算法。
使用范围生成列表:
>>> range(10)
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
使用list comprehension获取x ^ 2的列表
>>> [x**2 for x in range(10)]
[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
>>>
诺维科夫提供了一个更优雅的答案
答案 2 :(得分:2)
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)
答案 3 :(得分:1)
有人提到了生成器 - 这就是你在这种情况下使用它们的方式:
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))
答案 4 :(得分:0)
或使用地图和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))
答案 5 :(得分:0)
代码:
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]