2017-02-10 118 views
0

我的代碼是用python 3編寫的,它的意思是打印出迴文。 應該通過2個3位數的所有迴文產品迭代,如下圖所示:爲什麼排序列表返回無?

mylist=[] 
for i in range(999,99,-1): 
    for x in range(999, i-1, -1,): 
     number=i*x 
     number=str(number) 
     if number==number[::-1]: 
      #print(number)   
      mylist.append(number) 
mylist=mylist.sort(reverse=True) 
print(mylist) 

注意註釋掉打印。當這仍然存在時,應該打印的所有迴文出來。 當我運行我的代碼時,沒有print語句,控制檯只打印出'None'。

據我所見,我的邏輯是有序的,爲什麼會發生這種情況? 編輯: 此外,當我以相反的順序排序我的列表時,99999排在第一位。我收集這是因爲python看起來連續9年,並認爲它是最大的。 但是,有沒有簡單的方法來獲得實際最大數量?

+5

你mylist'綁定'來調用'.sort'是就地操作,返回'None'的結果。只要做'mylist.sort(reverse = True)'。 –

+0

@Shawn Li不知道你的修改意味着什麼,但是默認情況下,數字按遞增的數字順序排序,但是你添加了'reverse = True',它會把最大的數字放在第一位 - 因爲好吧,它*是*實際的最大的數字。 – JulienD

+0

@JulienD他們沒有按數字順序排序,因爲99999最先出現,但是一個數字比如101101大於99999.所以我的觀點是你能讓數字最大的數字最接近無窮大嗎? –

回答

5

list.sort()總是返回無(該列表已就地排序)。你想要的是sorted(list)它返回一個新的排序列表。

然後,你可以這樣對它們進行排序:

mylist = [int(x) for x in mylist] 
mylist.sort(reverse=True) 
mylist = [str(x) for x in mylist] 
相關問題