我不得不按字母顺序创建自己的“排序”函数,然后在另一个函数中使用函数。我的目标是按字母顺序排列一个列表,我的测试列表有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