排序后,list內元素自身大小寫改變不改變問題。
def?cmp_ignore_case(s1,s2): ????return?cmp(s1.lower(),s2.lower()) print?sorted(['','','',''],cmp_ignore_case) 其中s1和s2都已經進行了大小寫轉換處理,為什么最后輸出時并沒有大小寫的轉換效果?
def?cmp_ignore_case(s1,s2): ????return?cmp(s1.lower(),s2.lower()) print?sorted(['','','',''],cmp_ignore_case) 其中s1和s2都已經進行了大小寫轉換處理,為什么最后輸出時并沒有大小寫的轉換效果?
2015-11-16
舉報
2015-11-27
cmp(x,y) 函數只是用于比較2個對象,如果 x < y 返回 -1, 如果 x == y 返回 0, 如果 x > y 返回 1,并不會返回x或y。這個題中傳入了s1,s2。但是比較的時候只是借用對s1/s2轉換后的數值進行比較,返回的也只是-1、0、1。拆開也就相當于:
def cmp_ignore_case(s1, s2):
? ? s1 = s1.lower()
? ? s2 = s2.lower()
? ? if s1 > s2:
? ? ? ? return 1
? ? if s1 < s2:
? ? ? ? return -1
? ? return 0
print sorted(['', '', '', ''], cmp_ignore_case)
2015-11-19
sorted只是對list進行排序,并不會改變list中的內容