排序后,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
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)
举报