ITPub博客

首页 > 数据库 > 数据库开发技术 > #PY小贴士# 同样是排序,sort和sorted有啥不同?

#PY小贴士# 同样是排序,sort和sorted有啥不同?

原创 数据库开发技术 作者:Crossin的编程教室 时间:2020-01-07 13:45:00 0 删除 编辑

对列表中的元素进行排序,有两种常用方法:

1.

lst = [3, 5, 2, 1, 7]lst.sort()print(lst)

2.

lst = [3, 5, 2, 1, 7]lst = sorted(lst)print(lst)


虽然二者都可以实现排序,也都可以设定 key(排序函数)和 reverse(逆序)参数,但在使用时却有个很大的区别:

  • list 的 sort 方法是在原列表上进行排序,没有返回值,调用后列表中的元素即成为有序的。如果你把结果赋值,就会得到 None;

  • 内置函数 sorted 则不修改原列表,而是生成一个新列表作为返回值。所以调用后必须赋值给变量才能保存结果。


Python 这么设计固然有它的道理(sorted 是后引入的,对 sort 的补充),但这并不是必然的选择。比如与 sorted 功能有些类似的,random 模块的 shuffle 方法,就是在原列表基础上打乱顺序,而非返回一个新列表。


你很难仅从方法的所属和名称就判断它的参数和返回值是怎样的。比如 range(a, b) 是包括 a 不包括 b,而 random.randint(a, b) 则是包括 a 也包括 b。


所以你在使用一个方法时,必定需要查阅相关文档,或在 python shell 中使用 help(方法名),了解参数和返回值的具体限定。





在 #PY小贴士#里,我们会分享一些 python 知识点、开发中的小技巧、容易踩到的坑,以及学员遇到并在群里提到真实问题。篇幅尽量短小,适合碎片时间阅读,欢迎关注!


如果你在编程学习中有疑问,可选择以下方式向我们提问:

1. 加入码上行动答疑群(最及时响应)

2. 加入知识星球 https://t.zsxq.com/IiAiiQj

3. 发微博加上 #编程教室# 并 @Crossin(非私信)

提问时请表述清楚,附上必要代码、输出等截屏。


也可向本栏目投稿,分享你开发中的经验。采纳后将署名发表,并可附上个人博客、公众号、Github等介绍。




原文作者:Crossin的编程教室;如有侵权,请联系管理员删除。

请登录后发表评论 登录
全部评论

注册时间:2015-06-05

  • 博文量
    498
  • 访问量
    200513