Python中的sort()方法

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\

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]

?
二、sorted
返回一个有序的副本,并且类型总是列表,如下:
lst = [3, 6, 2, 4]
sorted_lst = sorted(lst)
print sorted_lst    # [2, 3, 4, 6]
print lst        # [3, 6, 2, 4]

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值