本文實例講述了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
|
但這次調用的時候就有區別了。