Python學習之sort與sorted


>>> a=[9,8,7,6,5,4,3,2,1]
>>> a.sort()
>>> a
>>> [1, 2, 3, 4, 5, 6, 7, 8, 9]
>>>
>>> b=[9,8,7,6,5,4,3,2,1]
>>> c=sorted(b)
>>> b
[9,8,7,6,5,4,3,2,1]
>>> c
[1, 2, 3, 4, 5, 6, 7, 8, 9]

由以上可知,list.sort()方法會按照升序將列表重新排列,不會保留原列表。

而sorted()會返回副本,原始輸入不變。

 

sorted()也是一個高階函數,它可以接收一個比較函數來實現自定義排序,比較函數的定義是,傳入兩個待比較的元素x,y,如果x應該排在y前面,則返回-1;如果x應排在y后面,則返回1;如果x與y相等,則返回0。

因此,如果要實現倒序排列,只需編寫一個reverse_cmp函數:

def reversed_cmp(x, y):
    if x > y:
        return -1
    if x < y:
        return 1
    return 0

如此,調用sorted()並傳入reverse_cmp就可以實現倒序排列:

>>> sorted([36, 5, 12, 9, 21], reversed_cmp)
[36, 21, 12, 9, 5]

 

任務:

對該字符串排序,忽略大小寫

輸入:['bob', 'about', 'Zoo', 'Credit']

輸出:['about', 'bob', 'Credit', 'Zoo']

思路:

sorted()對字符串排序時,默認按照ASCII碼大小比較,順序是A,B,C...X,Y,Z...a,b,c...x,y,z

def cmp_ignore_case(s1, s2):
    u1 = s1.upper()
    u2 = s2.upper()
    if u1 < u2:
        return -1
    if u1 > u2:
        return 1
    return 0
print sorted(['bob', 'about', 'Zoo', 'Credit'], cmp_ignore_case)

  

 


免責聲明!

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



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