已安装Python 3.6或以上版本;
已掌握“[Python3] 列表的基本用法[TZZ]”;
启动IDLE程序。通过IDLE新建一个源码文件,然后将其保存为“sort_list.py”文件;
在源码文件中,创建一个nums列表并填上一些数值(必须是数值,数值和字符串混合无法比较大小)。然后,调用nums.sort()方法对nums列表进行升序排列并打印排序后nums列表的内容。接着,再次调用nums.sort()方法并将排序方式指定为降序(即reverse = True),然后再次输出nums的内容。代码编写完毕后,点击F5运行代码。程序执行完毕后,通过Shell窗口可以见到打印的列表内容,可以确定排序结果是正确的;
继续向源代码中追加代码。这次创建一个全部是字符串数值元素的nums列表,然后调用sorted函数对其进行排序。最后,分别输出原始列表nums和排序后的列表sortedNums。代码编写完毕后,点击F5运行。程序执行完毕后,Shell窗口中会打印出“原始列表”和“使用降序排列的列表”内容。仔细观察后发现,Python对字符串排序是从第1个字符开始比较的,升序时,第1个字符小的排在前面。当两个字符相等时,比较第2个字符的大小,以此类推;
为了进一步确定Python对字符串的排列规则,可以继续向源码中添加试验代码。在新增加的代码中,我定义了一个新的列表,其中放了一个'25'和'2'。我认为使用sorted排序后,'25'应该排在'2'的前面。可惜,运行程序后发现,我错了;
在源代码中,重新定义一个列表,交换一下'25'和'2'的位置,排序后将结果输出。运行代码后,证明我猜对了。可惜我对算法不是很熟,大学学的数据结构早忘光了,没法一眼看出Python到底采用的是啥排序算法;
继续向源码中追加测试tx_insert_sort函数的测试代码。然后运行程序查看执行结果。观察执行结果,可以确认其排序特征与Python中的sorted函数相同('2'会排到'25'的前面,所有数据都是向后移动的);
试验完字符串列表后,接下来再试试特殊符号(比如:'.','-',':')字符串列表的排序。继续向源码中追加测试特殊符号字符串列表排序的代码。然后点击F5运行。观察Shell窗口的输出结果,发现它们的大小关系是:':' > '.' > '-',完全符合ASCII中的编码大小关系;
继续编写代码,测试一下这3个符号在时间字符串中的排列情况。写完代码并运行后,其输出结果表明,Python确实是一个字符一个字符比较大小的;
继续追加代码,将时间字符串列表s中的所有时间统一成相同的格式,然后再执行排序。很多时候,处理字符串列表时,需要将它们统一成相同的格式,才能获得正确的排序结果。代码编写完毕后,点F5执行。在Shell窗口中可以见到正确的时间排序结果;
至此,Python中列表排序的方法已经介绍完毕。希望你能从中学到一些有用的知识。下一篇我在跟大家谈谈“Python中的列表推导”。Enjoy!
编程重在实践!大家一起加油!