我不得不按字母順序創建自己的「排序」函數,然後在另一個函數中使用函數。我的目標是按字母順序排列一個列表,我的測試列表有4個元素,但最終目的是將這個函數應用到一個大的列表中,這就是爲什麼我先在幾個元素上嘗試它,因爲它更容易分析結果。Python - 無法按字母順序排序我的列表
這裏要說的是排序按字母順序排列的功能:
def alphaOrder(word1, word2, index):
if index == len(word1):
return [word1, word2]
if index == len(word2):
return [word2, word1]
if ord(word1[index]) == ord(word2[index]):
return alphaOrder(word1, word2, index + 1)
elif ord(word1[index]) < ord(word2[index]):
return [word1, word2]
else:
return [word2, word1]
這裏是我試圖讓超過2個元素的列表,工作中的作用:
def sortMyList(liste):
continu = True
noInversion = False
i = 0
while continu:
item0 = liste[i]
item1 = liste[i + 1]
l = alphaOrder(item0, item1, 0)
if liste[i] != l[0]:
noInversion = True
liste[i] = l[0]
liste[i+1] = l[1]
if i + 1 < len(liste):
i += 1
else:
i = 0
if noInversion:
continu = False
return liste
和這裏是我的測試列表來驗證我的功能是否有效:
a = []
a.append("aaaazza")
a.append("anaaazza")
a.append("anaaazz11a")
a.append("aaaaa")
print(a)
print(sortMyList(a))
當我打印時,是我得到:
['aaaazza', 'anaaazza', 'anaaazz11a', 'aaaaa']
['aaaazza', 'anaaazz11a', 'anaaazza', 'aaaaa']
,但我應該得到:
['aaaaa', 'aaaazza', 'anaaazz11a', 'anaaazza']
做什麼人有什麼不對任何想法,我應該怎麼正確嗎?
嘗試'a.sort()'。 –
我強烈建議首先查看已建立的排序方法之一,並查看如何將這些概念應用於您的方法。 [泡泡類](http://en.wikipedia。org/wiki/Bubble_sort)是最簡單的一種,但速度很慢。 [快速排序](http://en.wikipedia.org/wiki/Quicksort)具有更好的性能,但實施起來可能稍微複雜一些。 – IanAuld
此外,作爲一個提示,你不應該使用'ord()'排序,除非你想這被認爲是一個正確排序的列表:'['A','C','b']' – IanAuld