看到这里的讨论后:Python-生成时差 https://stackoverflow.com/questions/4154116/python-generate-the-time-difference/4154298#4154298我很好奇。我最初也认为生成器比列表更快,但是当涉及到排序()时我不知道。将生成器表达式发送到排序()而不是列表有什么好处吗?无论如何,在排序之前,生成器表达式最终是否会被放入排序()内部的列表中?
编辑:我很难过只能接受一个答案,因为我觉得很多回复都有助于澄清这个问题。再次感谢大家。
第一件事sorted()
所做的就是将数据转换为列表。基本上,实现的第一行(在参数验证之后)是
newlist = PySequence_List(seq);
也可以看看完整源代码版本2.7 http://svn.python.org/view/python/tags/r27/Python/bltinmodule.c?view=markup and 版本3.1.2 http://svn.python.org/view/python/tags/r312/Python/bltinmodule.c?view=markup.
Edit: 正如文中所指出的由 aaronasterling 提供的答案 https://stackoverflow.com/questions/4154571/sorted-using-generator-expressions-rather-than-lists/4155652#4155652,变量newlist
是,嗯,一个new列表。如果参数已经是列表,则将其复制。所以生成器表达式确实具有使用更少内存的优点。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)