网站首页 > 基础教程 正文
sort()是列表类型的方法,只适用于列表;sorted()是内置函数,支持各种容器类型。它们都可以排序,且用法类似,但sort()是在原地排序的,不会返回排序后的列表,而sorted()是返回新的排序列表。
1 >>> help(list.sort) 2 Help on method_descriptor: 3 4 sort(...) 5 L.sort(key=None, reverse=False) -> None -- stable sort *IN PLACE* 6 7 8 >>> help(sorted) 9 Help on built-in function sorted in module builtins: 10 11 sorted(iterable, /, *, key=None, reverse=False) 12 Return a new list containing all items from the iterable in ascending order. 13 14 A custom key function can be supplied to customize the sort order, and the 15 reverse flag can be set to request the result in descending order.
本文仅简单介绍排序用法。
例如列表L:
>>> L = ['python', 'shell', 'Perl', 'Go', 'PHP']
使用sort()和sorted()排序L,注意sort()是对L直接原地排序的,不是通过返回值来体现排序结果的,所以无需赋值给变量。而sorted()则是返回排序后的新结果,需要赋值给变量才能保存排序结果。
1 >>> sorted(L) 2 ['Go', 'PHP', 'Perl', 'python', 'shell'] 3 >>> L 4 ['python', 'shell', 'Perl', 'Go', 'PHP'] 5 6 7 >>> L.sort() 8 >>> L 9 ['Go', 'PHP', 'Perl', 'python', 'shell']
不难发现,sort()和sorted()默认都是升序排序的(A<B<...<Z<a<b<...<z)。它们都可以指定参数reverse=True来表示顺序反转,也就是默认得到降序:
1 >>> L.sort(reverse=True) 2 >>> L 3 ['shell', 'python', 'Perl', 'PHP', 'Go']
在python 3.x中,sort()和sorted()不允许对包含不同数据类型的列表进行排序。也就是说,如果列表中既有数值,又有字符串,则排序操作报错。
sort()和sorted()的另一个参数是key,它默认为key=None,该参数用来指定自定义的排序函数,从而实现自己需要的排序规则。
例如,上面的列表不再按照默认的字符顺序排序,而是想要按照字符串的长度进行排序。所以,自定义这个排序函数:
1 >>> def sortByLen(s): 2 ... return len(s)
然后通过指定key = sortByLen的参数方式调用sort()或sorted(),在此期间还可以指定reverse = True:
1 >>> L = ['shell', 'python', 'Perl', 'PHP', 'Go'] 2 3 >>> sorted(L,key=sortByLen) 4 ['Go', 'PHP', 'Perl', 'shell', 'python'] 5 6 >>> L.sort(key=sortByLen,reverse=True) 7 >>> L 8 ['python', 'shell', 'Perl', 'PHP', 'Go']
再例如,按照列表每个元素的第二个字符来排序。
1 def f(e): 2 return e[1] 3 4 L = ['shell', 'python', 'Perl', 'PHP', 'Go'] 5 6 sorted(L, key=f) 7 L.sort(key=f)
更多的排序方式,比如指定两个排序依据,一个按字符串长度升序排,长度相同的按第2个字符降序排。用法其实很简单,不过稍占篇幅,所以本文不解释了。
觉得文章还可以的话不妨点个赞,有任何意见或者看法欢迎大家评论!
我是一名python开发工程师,整理了一套python的学习资料,如果你对编程感兴趣,关注我并在后台私信小编:“08”即可免费领取资料!希望对你能有所帮助!
猜你喜欢
- 2024-11-22 Python 实现经典算法之堆排序
- 2024-11-22 Python版排序算法总结
- 2024-11-22 python冷门操作-11.list排序干货
- 2024-11-22 Python 排序了解一下
- 2024-11-22 Python实现冒泡排序
- 2024-11-22 Python 快速排序:高效算法一探究竟
- 2024-11-22 Python实现快速排序
- 2024-11-22 python对象自定义排序你知道吗
- 2024-11-22 Python应用——自定义排序全套方案
- 2024-11-22 Python函数知识整理
- 最近发表
- 标签列表
-
- gitpush (61)
- pythonif (68)
- location.href (57)
- tail-f (57)
- pythonifelse (59)
- deletesql (62)
- c++模板 (62)
- css3动画 (57)
- c#event (59)
- linuxgzip (68)
- 字符串连接 (73)
- nginx配置文件详解 (61)
- html标签 (69)
- c++初始化列表 (64)
- exec命令 (59)
- canvasfilltext (58)
- mysqlinnodbmyisam区别 (63)
- arraylistadd (66)
- node教程 (59)
- console.table (62)
- c++time_t (58)
- phpcookie (58)
- mysqldatesub函数 (63)
- window10java环境变量设置 (66)
- c++虚函数和纯虚函数的区别 (66)