2011-10-11 72 views
-1

我做在我所编写这个problem-如何改进这个python代码?

>>> getNumbers(10) 
[100, 64, 36, 16, 4, 0, 4, 16, 36, 64, 100] 
>>> getNumbers(9) 
[81, 49, 25, 9, 1, 1, 9, 25, 49, 81] 

我得到我的代码的答案,但我不满意我的代码有问题,请建议一些选项,以改善该代码。

def getNumbers(num): 
myList=[] 
mylist=[] 
if num%2==0: 
    for numbers in range(num,-2,-2): 
     myList.append(numbers**2) 
    for numbers in range(2,num+2,2): 
     mylist.append(numbers**2) 

    print myList+mylist 

elif num%3==0: 
    for numbers in range(num,-1,-2): 
     myList.append(numbers**2) 
    for numbers in range(1,num+2,2): 
     mylist.append(numbers**2) 

    print myList+mylist 

else: 
    print(mylist) 

4 for for循环!这是在这里戏弄我的!

+5

http://codereview.stackexchange.com/ –

回答

1

是否这样?

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

不要使用拉姆达这样。这是错误 – JBernardo

+0

我只是一个beginner.i我做的列表问题,这是可用的pyschool.i不知道lambda.i也不知道他们为什么关闭我的问题。这是我的第二个问题在这个forum.i只是想要改进我的代码,我知道你们可以告诉我最好的选择。我不能问聪明的问题,因为直到现在我不在这个水平......但感谢你们的帮助:))你给了我一个最好的消除那些循环的方法... – Praveenks

+0

“我也不知道他们为什么关闭我的问题。”它确切地说明了为什么,就在那里:它是Stack Overflow的主题。这个网站不是关于如何改进你的编码风格,而是关于如何解决你的编码问题。 –