在Python等编程中,时常会用到字符串排序。
今天在这里只讲讲最常用的Python字符串排序。
同时,只讲sorted()函数方法。
给定一个字符串列表:
sl = ['共和国', '中国', '中华人民共和国', '大中华', '人民共和国']。
第一种排序方法是不使用任何参数。
默认为按字符串中所有汉字的Unicode值大小升序排序,如下图所示:
那么如果想要降序排序怎么办?
可以通过使用reverse参数来实现:
第二种排序方法是使用key参数。
按key的指标进行排序:
可以看到列表现在按字符串长度有序了,默认为升序排列。
然而有时我们需要的是按字符串长度降序排序。
这时也需要用到reverse参数。
使用效果如下:
第三种方法是同时使用key参数和lambda函数。
两者的结合可令排序指标更加多样化。
下面将上述4种排序用key和lambda结合再实现一遍:
1.
或者:
2.
或者:
或者:
3.
4.
或者:
但是,通过对比3和4,我们不难发现,两者产生的结果列表元素并不对称。
对于长度相同的字符串,总是自动再进行二次排序,即按上述的字符串中所有汉字Unicode大小升序排序。
也就是说,“共和国”总是排在“大中华”前面。
那么有没有控制长度相同字符串的排列顺序的方法呢?
答案是“有”。
需要加一个嵌套。
对于3,先按字符串中所有汉字的Unicode大小降序排序,再按字符串长度升序排序:
对于4,先按字符串中所有汉字的Unicode大小降序排序,再按字符串长度降序排序: