繁体   English   中英

如何使用for和while循环使用python按字母顺序排序?

[英]How to use for and while loop to sort in alphabetical order using python?

我仍在尝试学习python。 我创建了一个水果列表如下

fruitList = ["pear","apple","strawberry","banana","orange"]

我想使用 for 循环和 while 循环按字母顺序打印它们。

   fruitList.sort()

因为python有这个叫做sort()的函数,所以我可以排序。 但是如果我不想使用排序功能怎么办?

但是,现在,我有关于如何使用 while 循环进行排序的问题? 有人能告诉我我怎么能这样做吗? 这是我尝试过的,使用 len()

for fruit in fruitList:
    while (len(fruitList[0]) > len(fruit[0])):
            fruit += 1
            print fruit
            continue

当我运行这个程序时没有打印任何内容。 在 while 循环中,我是想与 index[0] 进行比较还是也可以使用 sort 函数?

你可以这样做:

for f in sorted(fruitList):
    print(f)

并同时:

while fruitList:
    print(min(fruitList))
    fruitList.remove(min(fruitList))

但我的意思是,使用“while”是个坏主意

PS sort() 不是函数,它是一个列表方法

内置排序程序不需要使用 for 或 While

如果你想学一会儿,看看一些教程什么的。

https://wiki.python.org/moin/ForLoop

要对您的列表进行排序,请执行以下操作

fruitList = ["pear","apple","strawberry","banana","orange"]
print sorted(fruitList)
print fruitList
fruitList.sort()
print fruitList

输出 :

['apple', 'banana', 'orange', 'pear', 'strawberry']
['pear', 'apple', 'strawberry', 'banana', 'orange']
['apple', 'banana', 'orange', 'pear', 'strawberry']

首先,您应该选择一种排序算法,IMO 最容易理解的算法之一是冒泡排序(但也是最低效的算法之一!)

swaped = True #Just to enter the first time
while swaped:
    swaped = False
    for i in range(len(fruitList)-1):
        if fruitList[i] > fruitList[i+1]:
            aux = fruitList[i]
            fruitList[i] = fruitList[i+1]
            fruitList[i+1] = aux
            swaped = True
print(fruitList)

好的,首先您要尝试按字母顺序排序,那么您为什么要考虑列表中单词的长度而不是它们的名称?

此外,您的代码中存在一些错误,我不明白您要做什么。

for fruit in fruitList:
    while (len(fruitList[0]) > len(fruit[0])):
        fruit += 1
        print fruit
        continue

首先, len(fruitList[0])是列表中第一项的长度(假设它是pear )。

在第一次迭代中, fruit将是fruitList[0]pear

当你在做len(fruitList[0]) > len(fruit[0])你在做(在第一次迭代中) len("pear") > len('p')总是 'True' 作为只要您没有空字符串……在这种情况下, fruit[0]会抛出错误。 现在,你为什么要这样做? 你想做什么?

不管怎样,让我们​​继续,因为上面的条件是'True',那么下一行代码是fruit +=1但是fruit是一个字符串而'1' 是一个int,所以你试图添加一个'str' + 'int' 引发错误。

Sooooo .... 你的代码没有运行,它会抛出一个错误,如果你说你的代码没有打印任何东西,那么你的 while 块中就会出现“假”,所以你发布的代码是与您在计算机中运行的完全相同,对吗?

最后,要回答您的问题,要按字母顺序排列您的列表,您必须检查字母。

首先将列表中的第一项设置为第一项。 然后检查列表中的第二个项目并与之前的项目进行比较,如果第二个在前面,则移动它。 然后检查下一个项目,与它之前的项目进行比较,如果它在之前,则与该项目之前的项目进行比较并相应地移动......重复直到您检查了列表中的每个项目。 ---> 或者使用上面解释的冒泡排序(只需阅读该答案)

现在您遍历列表,并为每个水果一次又一次地对列表进行排序。 你不需要这个。 做就是了

print sorted(fruitList)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM