python实现忽略大小写对字符串列表排序的方法
本文实例讲述了python实现忽略大小写对字符串列表排序的方法,是非常实用的技巧。分享给大家供大家参考。具体分析如下:
先来看看如下代码:
string=''' thestirng Hasmany lineIn THEfIle jb51net ''' list_of_string=string.split() printlist_of_string#将字符串分离开,放入列表中 print'*'*50 defcase_insensitive_sort(liststring): listtemp=[(x.lower(),x)forxinliststring]#将字符串列表,生成元组,(忽略大小写的字符串,字符串) listtemp.sort()#对元组排序,因为元组为:(忽略大小写的字符串,字符串),就是按忽略大小写的字符串排序 return[x[1]forxinlisttemp]#排序完成后,返回原字符串的列表 printcase_insensitive_sort(list_of_string)#调用起来,测试一下
结果:
['the','stirng','Has','many','line','In','THE','fIle','jb51','net'] ************************************************** ['fIle','Has','In','jb51','line','many','net','stirng','THE','the']
另一种方法:
使用内建函数
sorted(iterable[,cmp[,key[,reverse]]])
该函数的官方描述文档如下:
Returnanewsortedlistfromtheitemsiniterable.
keyspecifiesafunctionofoneargumentthatisusedtoextractacomparisonkeyfromeachlistelement:key=str.lower.ThedefaultvalueisNone.
使用参数key=str.lower
完整代码如下:
string=''' thestirng Hasmany lineIn THEfIle jb51net ''' list_of_string=string.split() printlist_of_string#将字符串分离开,放入列表中 print'*'*50 defcase_insensitive_sort2(liststring): returnsorted(liststring,key=str.lower) printcase_insensitive_sort2(list_of_string)#调用起来,测试一下
效果一样~
方法三:
使用list的sort方法:
该方法的官方描述文档如下:
Thesort()methodtakesoptionalargumentsforcontrollingthecomparisons.
cmpspecifiesacustomcomparisonfunctionoftwoarguments(listitems)whichshouldreturnanegative,zeroorpositivenumberdependingonwhetherthefirstargumentisconsideredsmallerthan,equalto,orlargerthanthesecondargument:cmp=lambdax,y:cmp(x.lower(),y.lower()).ThedefaultvalueisNone.
keyspecifiesafunctionofoneargumentthatisusedtoextractacomparisonkeyfromeachlistelement:key=str.lower.ThedefaultvalueisNone.
reverseisabooleanvalue.IfsettoTrue,thenthelistelementsaresortedasifeachcomparisonwerereversed.
具体代码如下:
string=''' thestirng Hasmany lineIn THEfIle jb51net ''' list_of_string=string.split() printlist_of_string#将字符串分离开,放入列表中 print'*'*50 defcase_insensitive_sort3(liststring): liststring.sort(cmp=lambdax,y:cmp(x.lower(),y.lower())) case_insensitive_sort3(list_of_string) printlist_of_string
但这次调用的时候就有区别了。
感兴趣的朋友可以调试运行一下本文实例以加深印象,相信会有新的收获!