今天在http://www.pythontip.com刷题的时候遇到一个排序的问题:一个列表中既有字符串,又有数字,该怎么排序。

list = [1,2,5,4,'d','s','e',45]
list.sort()

如果直接调用sort()函数则会报

TypeError                                 Traceback (most recent call last)
<ipython-input-9-f338e0e85925> in <module>()
----> 1 list.sort() TypeError: '<' not supported between instances of 'str' and 'int'

我理解的是sort()函数内部是通过'<'来完成大小的比较,而'<'不支持对字符串和数字之间的的比较。

后来发现有个sorted()函数可解决字符串和数字一起的排序问题

new_list = sorted(list)

sorted()跟sort()的调用方式不太一样,sorted()是将欲排序的list作为参数传入,然后得到排序后的list,而sort()是在原list的基础上进行排序。

sort()函数仅定义在list中,而sorted()对所有的可迭代对象都有效。

通过help()查看下两者区别:

---------------------------------sorted----------------------------------------

In [14]: help(list.sort)
Help on built-in function sort:

sort(...) method of builtins.list instance
L.sort(key=None, reverse=False) -> None -- stable sort *IN PLACE*

--------------------------------sorted---------------------------------------

In [15]: help(sorted)
Help on built-in function sorted in module builtins:

sorted(iterable, /, *, key=None, reverse=False)
Return a new list containing all items from the iterable in ascending order.

A custom key function can be supplied to customize the sort order, and the
reverse flag can be set to request the result in descending order.

升序返回一个新的列表包含所有项目的迭代。

可以提供自定义key函数以自定义排序顺序,可以设置反向标志以按降序返回结果。

最新文章

  1. PE文件格式 持续更新ing
  2. js有关时间日期的操作
  3. css3之2D转换
  4. iOS数据本地持久化
  5. POJ2299 Ultra-QuickSort
  6. Codeforces Round #310 (Div. 2) A B C
  7. Activti跳过中间节点的helloworld实例程序
  8. RegisterFunction z
  9. handsontable的核心方法
  10. excel内容转成xml
  11. office 文件在网页中显示
  12. Java学习—— for循环
  13. hibernate它 11.many2many双向
  14. Jfinal中Db类的的使用
  15. java8版本base64加密解密
  16. cglib动态代理举例
  17. android inline hook
  18. 【反编译系列】三、反编译神器(jadx)
  19. iOS下如何阻止橡皮筋效果
  20. 设置mysql group_concat长度

热门文章

  1. MVC--布局--razor
  2. python 协程(单线程中的异步调用)(转廖雪峰老师python教程)
  3. ionic 下拉刷新,上拉加载更多
  4. redis安装之zmalloc.h:55:2: error: #error &quot;Newer version of jemalloc required&quot;错误
  5. Nutch 使用总结
  6. 如何在CLI命令行下运行PHP脚本,同时向PHP脚本传递参数?
  7. Swift 高级运算符
  8. 应用程序挂起、复原与终止— IOS开发
  9. JDK1.8在LINUX下安装步骤
  10. poj_1037 动态规划+字典序第k大