Python中的sort()和sorted():
一、sort()
列表有自己的sort方法,其对列表进行原址排序,既然是原址排序,那显然元组不可能拥有这种方法,因为元组是不可修改的。
lst = [3, 6, 2, 4] lst.sort() # para: cmp, key, reverse print lst # [2, 3, 4, 6]
如果需要一个排序好的副本,通过分片操作y = x[:] 将列表x的元素全部拷贝给y,如果简单的把x赋值给y:y = x,y和x还是指向同一个列表,并没有产生新的副本。
lst = [3, 6, 2, 4] lst_copy = lst[:] lst_copy.sort() # para: cmp, key, reverse print lst # [3, 6, 2, 4] print lst_copy # [2, 3, 4, 6] lst_copy = lst lst_copy.sort() print lst # [2, 3, 4, 6]
1、可以定义自己的比较函数,然后通过参数传递给sort方法:
lst = [3, 6, 2, 4]
def mycmp1(x,y): # ascending order return x-y
def mycmp2(x,y): # descending order return y-x lst.sort(cmp=mycmp1) print lst # [2, 3, 4, 6] lst.sort(cmp=mycmp2) print lst # [2, 3, 4, 6]
2、还可以通过reverse参数实现降序排序:
2、key在使用时必须提供一个排序过程总调用的函数:
lst = ['ae', 'bcd', 'f'] lst.sort(key=len) print lst # ['f', 'ae', 'bcd']
3、reverse实现降序排序,需要提供一个布尔值:
lst = [3, 6, 2, 4] lst.sort(reverse=True) print lst # [6, 4, 3, 2]