谁能解释为什么这种排序不起作用?

2024-01-08

例如,如果我有一个这样的列表:

List1 =[7,6,9]
List1 = List1.sort()

list.sort()对列表进行就地排序并返回None,所以你实际上将该返回值分配给List1, i.e None.

>>> List1 =[7,6,9]
>>> repr(List1.sort())
'None'                     #return Value of list.sort
>>> List1                  #though list is sorted
[6, 7, 9]

另一方面是内置函数sorted返回一个new排序列表:

>>> List1 =[7,6,9]
>>> sorted(List1)
[6, 7, 9]
>>> List1           #List1 is not affected
[7, 6, 9]

您可以将结果分配回sorted to List1,但这没有意义,因为list.sort会在更短的时间内做同样的事情。

>>> List1 = sorted(List1)
>>> List1
[6, 7, 9]

虽然上面的代码类似于list.sort,但实际上它有点不同,因为它返回新列表。例子:

>>> List1 =[7,6,9]
>>> List2 = List1         # both List1, List2 point to the same object [7, 6, 9]
>>> List1.sort()          # sort List1 in-place, affects the original object
>>> List1, List2
([6, 7, 9], [6, 7, 9])    # both variables still point to the same list

>>> List1 =[7,6,9]
>>> List2 = List1         #same as above
>>> List1 = sorted(List1) #sorted returns a new list, so List1 now points to this new list 
>>> List1, List2          #List2 is still unchanged
([6, 7, 9], [7, 6, 9])

时序比较:

>>> from random import shuffle

>>> lis = range(10**5)
>>> shuffle(lis)
>>> %timeit lis.sort()
1 loops, best of 3: 9.9 ms per loop

>>> lis = range(10**5)
>>> shuffle(lis)
>>> %timeit sorted(lis)
1 loops, best of 3: 95.9 ms per loop

So, sorted仅当您不想影响原始列表并希望将该列表的排序版本分配给其他变量时才应使用。

除了列出其他数据结构之外,例如set, tuples, dicts等没有自己的.sort()方法,所以sorted是你在那里唯一可以使用的东西。

>>> s = {1,5,3,6}  # set
>>> sorted(s)
[1, 3, 5, 6]

help on sorted:

>>> print sorted.__doc__
sorted(iterable, cmp=None, key=None, reverse=False) --> new sorted list
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

谁能解释为什么这种排序不起作用? 的相关文章

随机推荐

  • 如何将 EF6 与 ASP.NET Core 1 结合使用

    我创建了一个 ASP NET Core 1 项目并使用 Net Core 1 0 框架 并且想要使用实体框架6 我按照这个教程https docs efproject net en latest platforms aspnetcore n
  • Json (fasterxml) stackoverflow 异常

    当尝试序列化类别时 我遇到了 stackoverflow 例外 警告 StandardWrapperValve dispatcher Servlet service for servlet 调度程序抛出异常 java lang StackO
  • onCreate 正在复制视图

    我正在松散地遵循阳光课程 但遇到了问题 In my MainActivity onCreate方法 它最初称为 protected void onCreate Bundle savedInstanceState mStudentId Uti
  • 无法弄清楚为什么 PHP 没有从 $.ajax 调用接收 POST 数据

    我以前并不是没有做过同样的过程 但我不明白为什么我的 PHP 脚本的 POST 数据是空的 这是我所做的 发现的 我已经验证 ajax 调用的 data 参数具有值 submitSearch 函数和 success 参数中的警报显示搜索变量
  • applyBindings() 太快,在 Ajax 请求完成之前调用

    请考虑以下 ViewModel 片段 var id given1 given2 get testSynUfGet aspx null function data id data id given1 data given1 given2 da
  • 在 Windows 中将 python .py 作为服务启动

    我创建了一个 Windows 服务来启动 py 脚本 sc create Maraschino binPath C HTPC Maraschino maraschino cherrypy py DisplayName Maraschino
  • UITextView firstRectForRange 返回错误的框架

    Edit 简单的解决方案是将所有帧计算从viewDidLoad to viewDidAppear 我很难让以下代码正常工作 该代码返回 UITextView 中给定 NSRange 的第一帧 如果没有换行符 它就可以工作 但是当我在 UIT
  • MonoDevelop 中的调试/跟踪输出

    在 MonoDevelop 中哪里可以看到 System Diagnostics Debug 和 System Diagnostics Trace 输出 我认为它应该出现在 ApplicationOutput 窗口中 但无处可寻 应用程序输
  • 关于图像加载 IE 问题的 JavaScript/jQuery 事件侦听器

    我正在寻找一种方法来为尽可能多的浏览器实现此功能 var image new Image image addEventListener load function alert loaded false image src image url
  • C++ math.h abs() 与我的 abs() 相比有什么不同

    我目前正在用 C 编写一些像向量数学类的 glsl 并且我刚刚实现了一个abs 像这样的函数 template
  • 如何使用 Python 模块 Dragonfly 识别语音?

    我一直在试图弄清楚如何使用 Dragonfly 模块 我查看了文档 但似乎不知道如何使用它 我只想能够识别一些短语并根据这些短语采取行动 是的 这个例子将终止 我已经看过这个特定的例子很多了 它缺少一些关键功能 首先是 pythoncom
  • Apache Spark join 操作的扩展能力较差

    我在 Apache Spark 上运行 join 操作 发现没有弱可扩展性 如果有人能解释这一点 我将不胜感激 我创建两个数据帧 a b 和 a c 并通过第一列连接数据帧 我为 一对一 连接生成数据帧值 另外 我使用相同的分区器来避免随机
  • 文本字段在 iOS 模拟器上不显示键盘

    我试图使用基本文本字段在这里构建一个简单的登录屏幕 但我无法让键盘出现在模拟器中 通过物理键盘输入效果很好 但在 iOS 模拟器中没有可见的键盘 我必须明确打开它还是什么 感觉我在这里错过了一些非常基本的东西 buildLoginScree
  • 封闭件损坏 - 请帮我修复它

    in a 相关问题 https stackoverflow com questions 4584397 javascript countdown clock 4584501我已经发布了这段代码 它几乎可以工作 但计数器却不能 我们可以修复它
  • 如何在 OpenVDB 中对网格进行下采样

    OpenVDB中有什么好的方法可以对体素网格进行下采样吗 例如 我有体素大小为 1 0 的网格 8x8x8 我想要获得体素大小为 2 0 的网格 4x4x4 each voxel of new grid is some interpolat
  • CoreAudio - 如何确定播放aac文件的结尾

    我正在 iPhone 上使用 CoreAudio 但我无法找到如何知道歌曲何时播放完毕 我放了一个属性监听器kAudioQueueProperty IsRunning 它在开始播放时有效 但在文件结尾时无效 当我停止 AudioQueue
  • 如何显示api函数的输出?

    抱歉问基本问题 我正在尝试在 QPlainTextWidget 中显示 json 我有 api 函数 它有控制台输出并包含所有需要的数据 看起来像这样 int iperf run server struct iperf test test
  • npm 错误! 403 403 禁止 npm 发布

    我尝试在 npm 上发布公共包 但出现此错误 npm ERR code E403 npm ERR 403 403 Forbidden PUT https registry npmjs org clem b 2fweather Forbidd
  • OSX (XNU) 系统调用的实际记录在哪里?

    我正在浏览系统调用 master https opensource apple com source xnu xnu 4570 71 2 bsd kern syscalls master文件在这里 但根本没有记录 系统调用的文档是否存在 如
  • 谁能解释为什么这种排序不起作用?

    例如 如果我有一个这样的列表 List1 7 6 9 List1 List1 sort list sort 对列表进行就地排序并返回None 所以你实际上将该返回值分配给List1 i e None gt gt gt List1 7 6 9