[Python3] 列表排序[TZZ]
1、启动IDLE程序。通过IDLE新建一个源码文件,然后将其保存为“sort_list.py”文件;
![[Python3] 列表排序[TZZ]](https://exp-picture.cdn.bcebos.com/49c5d3e34b2c56eeb66b81bbf775e5f4fdf540a9.jpg)
2、在源码文件中,创建一个nums列表并填上一些数值(必须是数值,数值和字符串混合无法比较大小)。然后,调用nums.sort()方法对nums列表进行升序排列并打印排序后nums列表的内容。接着,再次调用nums.sort()方法并将排序方式指定为降序(即reverse = True),然后再次输出nums的内容。代码编写完毕后,点击F5运行代码。程序执行完毕后,通过Shell窗口可以见到打印的列表内容,可以确定排序结果是正确的;
![[Python3] 列表排序[TZZ]](https://exp-picture.cdn.bcebos.com/bff8683e21c2bbd63ec46a5d116186254093aea9.jpg)
3、继续向源代码中追加代码。这次创建一个全部是字符串数值元素的nums列表,然后调用衡痕贤伎sorted函数对其进行排序。最后,分别输出原始列表nu罪焐芡拂ms和排序后的列表sortedNums。代码编写完毕后,点击F5运行。程序执行完毕后,Shell窗口中会打印出“原始列表”和“使用降序排列的列表”内容。仔细观察后发现,Python对字符串排序是从第1个字符开始比较的,升序时,第1个字符小的排在前面。当两个字符相等时,比较第2个字符的大小,以此类推;
![[Python3] 列表排序[TZZ]](https://exp-picture.cdn.bcebos.com/430174fec314f1c567fa46743c27ac5307889da9.jpg)
4、为了进一步确定Python对字符串的排列规则,可以继续向源码中添加试验代码。在新增加的代码中,我定义了一个新的列表,其中放了一个'25'和'2'。我认为使用sorted排序后,'25'应该排在'2'的前面。可惜,运行程序后发现,我错了;
![[Python3] 列表排序[TZZ]](https://exp-picture.cdn.bcebos.com/ccc83ec5260f8835da9f5e6bce078801397086a9.jpg)
5、在源代码中,重新定义一个列表,交换一下'25'和'2'的位置,排序后将结果输出。运行代码后,证明我猜对了。可惜我对算法不是很熟,大学学的数据结构早忘光了,没法一眼看出Python到底采用的是啥排序算法;
![[Python3] 列表排序[TZZ]](https://exp-picture.cdn.bcebos.com/9a8fd9f88a775ddd9e59e2ffa427e7ef2906f9a9.jpg)
6、为了验证Python算法,可以向源代码文件中定义一个tx_insert_sort函数,然后实现插入排序算法(排序算法的具体内容请问百度)。为了让排序的过程更清楚,可以在代码中插入需要的打印信息;
![[Python3] 列表排序[TZZ]](https://exp-picture.cdn.bcebos.com/9881b1fce186242f8d6793aa35e434daf15ee8a9.jpg)
7、继续向源码中追加测试tx_insert_sort函数的测试代码。然后运行程序查看执行结果。观察执行结果,可以确认其排序特征与Python中的sorted函数相同('2'会排到'25'的前面,所有数据都是向后移动的);
![[Python3] 列表排序[TZZ]](https://exp-picture.cdn.bcebos.com/6061b9cd0c6efbf231a67262127bbbf4db58daa9.jpg)
8、试验完字符串列表后,接下来再试试特殊符号(比如:'.','-','稆糨孝汶;:')字符串列表的排序。继续向源码中追加测试特殊符号字符串列表排序的代码。然后点击F5运行。观察Shell窗口的输出结果,发现它们的大小关系是:':' > '.' > '-',完全符合ASCII中的编码大小关系;
![[Python3] 列表排序[TZZ]](https://exp-picture.cdn.bcebos.com/16a84fe10ef858569728af9153e9ccd2ba66cda9.jpg)
9、继续编写代码,测试一下这3个符号在时间字符串中的排列情况。写完代码并运行后,其输出结果表明,Python确实是一个字符一个字符比较大小的;
![[Python3] 列表排序[TZZ]](https://exp-picture.cdn.bcebos.com/bd72f23834bb19eff14a0ba1497bd28287893aae.jpg)
10、继续追加代码,将时间字符串列表s中的所有时间统一成相同的格式,然后再执行排序。很多时候,处理字符串列表时,需要将它们统一成相同的格式,才能获得正确的排序结果。代码编写完毕后,点F5执行。在Shell窗口中可以见到正确的时间排序结果;
![[Python3] 列表排序[TZZ]](https://exp-picture.cdn.bcebos.com/32fbcd41037de137aa632509f6c5cf672a5f2aae.jpg)
11、至此,Python中列表排序的方法已经介绍完毕。希望你能从中学到一些有用的知识。下一篇我在跟大家谈谈“Python中的列表推导”。Enjoy!