python实现忽略大小写对字符串列表排序的方法

这篇文章主要介绍了python实现忽略大小写对字符串列表排序的方法,通过三种不同的方法实现了对字符串的排序,是非常实用的技巧,需要的朋友可以参考下

本文实例讲述了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

但这次调用的时候就有区别了。

猜你喜欢

转载自www.cnblogs.com/wdbgqq/p/10207197.html
今日推荐