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

但這次調用的時候就有區別了。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM