前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >#PY小贴士# 同样是排序,sort和sorted有啥不同?

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

作者头像
Crossin先生
发布2020-01-17 10:33:37
5200
发布2020-01-17 10:33:37
举报
文章被收录于专栏:Crossin的编程教室

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

1.

代码语言:javascript
复制
lst = [3, 5, 2, 1, 7]
lst.sort()
print(lst)

2.

代码语言:javascript
复制
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等介绍。


本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-01-07,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Crossin的编程教室 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档