python list.sort()方法和内置函数sorted

.sort()方法

list.sort是就地将该列表进行排序,也就是说不会把原列表复制一份。这也是这个方法返回none的原因,提醒你本方法不会新建一个列表。就在这种情况下返回none是python的一个惯例:如果一个函数或者方法对对象进行的是就地改动,那他就应该返回none,好让调用者知道传入参数发生了变动,并且没有产生新的对象。例如random,shuffle这些函数也遵守了这个惯例。

import random

list = [20, 16, 10, 5]
random.shuffle(list)
print "随机排序列表 : ",  list

random.shuffle(list)
print "随机排序列表 : ",  list

>>>随机排序列表 :  [16, 5, 10, 20]
>>>随机排序列表 :  [16, 5, 20, 10]

用返回none来表示就地改动这个惯例也有一个弊端,就是调用者无法将其串联起来。而返回一个新对象的方法(比如str里的所有方法)则正好相反,它们可以串联起来调用,从而形成连贯的接口。

看一下sort和sorted的方法不同之处

frults = ['grape', 'respberry', 'apple', 'banana']
print(sorted(frults))  # >>> ['apple', 'banana', 'grape', 'respberry']
print(frults)  # >>> ['grape', 'respberry', 'apple', 'banana']
# 按照字母降序排序
print(sorted(frults, reverse=True))  # >>> ['respberry', 'grape', 'banana', 'apple']
# 新建一个用长度排序的列表
print(sorted(frults, key=len))  # >>> ['grape', 'apple', 'banana', 'respberry']
# 新建一个用长度降序排序的列表,
# 由于用到的排序算法是二分法,是稳定的,长度一样时候
# 不会出现列表完全反转的现象
print(sorted(frults, key=len, reverse=True))  # >>> ['respberry', 'banana', 'grape', 'apple']
# 上面的一系列操作都对frults没有影响
print(frults)  # ['grape', 'respberry', 'apple', 'banana']
frults.sort()
# 此时frults被排序
print(frults)  # ['apple', 'banana', 'grape', 'respberry']
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

后端工匠之道

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值