list.sort方法和内置函数sorted方法

        list.sort方法会就地排序列表,也就是说不会把原列表复制一份。这也是这个方法返回值为None的原因。在这种情况下返回None其实是Python的一个惯例:如果一个函数或方法对对象进行的是就地改动,那么他就应该返回None,好让调用者知道传入的参数发生了变动,而且为产生新的对象。

        内置函数sorted会新建一个列表作为返回值。这种方法可以接受任何形式的可迭代对象作为参数,甚至包括不可变序列或生成器。而不管sorted接受的是怎样的参数,他最后都会返回一个列表。

        list.sort和sorted都有两个可选关键字参数reverse、key:

        reverse:如果被设定为True,被排序的序列就会以降序输出。这个参数的默认值是False。

        key:一个只有一个参数的函数,这个函数会被用在序列里的每一个元素上,所产生的结果是排序算法依赖的对比关键字。例如:在对一些字符串进行排序时,可以用key=str.lower来实现忽略大小写的排序,或者是用key=len进行基于字符串长度的排序。参数的默认值是恒等函数。也就是默认用元素自己的值来排序。

fruits = ['grape', 'raspberry', 'apple', 'banana']
sorted(fruits)      # ['apple', 'banana', 'grape', 'raspberry']
# sorted会新建一个列表作为返回值,排序的结果不会影响到原列表的顺序
print(fruits)       # ['grape', 'raspberry', 'apple', 'banana']

sorted(fruits, reverse=True)    # ['raspberry', 'grape', 'banana', 'apple']

# 按照字符长度进行排序,同等长度的字符串好像是按照原始列表中的顺序来取的
sorted(fruits, key=len)  # ['grape', 'apple', 'banana', 'raspberry']

print(sorted(fruits, key=len, reverse=True))    # ['raspberry', 'banana', 'grape', 'apple']

fruits.sort()
# sort方法就地排序列表,直接修改列表
print(fruits)   # ['apple', 'banana', 'grape', 'raspberry']

        

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值