本文实例讲述了python实现忽略大小写对字符串列表排序的方法,是非常实用的技巧。分享给大家供大家参考。具体分析如下:
先来看看如下代码:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
string = ‘‘‘ the stirng Has many line In THE fIle jb51 net ‘‘‘ list_of_string = string.split() print list_of_string #将字符串分离开,放入列表中 print ‘*‘ * 50 def case_insensitive_sort(liststring): listtemp = [(x.lower(),x) for x in liststring] #将字符串列表,生成元组,(忽略大小写的字符串,字符串) listtemp.sort() #对元组排序,因为元组为:(忽略大小写的字符串,字符串),就是按忽略大小写的字符串排序 return [x[ 1 ] for x in listtemp] #排序完成后,返回原字符串的列表 print case_insensitive_sort(list_of_string) #调用起来,测试一下 |
结果:
1
2
3
|
[ ‘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]]])
该函数的官方描述文档如下:
Return a new sorted list from the items in iterable.
key specifies a function of one argument that is used to extract a comparison key from each list element:key=str.lower. The default value isNone.
使用参数key=str.lower
完整代码如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
string = ‘‘‘ the stirng Has many line In THE fIle jb51 net ‘‘‘ list_of_string = string.split() print list_of_string #将字符串分离开,放入列表中 print ‘*‘ * 50 def case_insensitive_sort2(liststring): return sorted (liststring,key = str .lower) print case_insensitive_sort2(list_of_string) #调用起来,测试一下 |
效果一样~
方法三:
使用list的sort方法:
该方法的官方描述文档如下:
The sort() method takes optional arguments for controlling the comparisons.
cmp specifies a custom comparison function of two arguments (list items) which should return a negative, zero or positive number depending on whether the first argument is considered smaller than, equal to, or larger than the second argument: cmp=lambda x,y: cmp(x.lower(), y.lower()). The default value is None.
key specifies a function of one argument that is used to extract a comparison key from each list element: key=str.lower. The default value is None.
reverse is a boolean value. If set to True, then the list elements are sorted as if each comparison were reversed.
具体代码如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
string = ‘‘‘ the stirng Has many line In THE fIle jb51 net ‘‘‘ list_of_string = string.split() print list_of_string #将字符串分离开,放入列表中 print ‘*‘ * 50 def case_insensitive_sort3(liststring): liststring.sort( cmp = lambda x,y: cmp (x.lower(), y.lower())) case_insensitive_sort3(list_of_string) print list_of_string |
但这次调用的时候就有区别了。