字典在Python 3.6中排序(至少在CPython实现下),与之前的版本不同.这似乎是一个重大变化,但它只是文档中的一小段.它被描述为CPython实现细节而不是语言特性,但也暗示这可能成为未来的标准.
在保留元素顺序的同时,新字典实现如何比旧字典实现更好?
以下是文档中的文字:
dict()现在使用PyPy开创的"紧凑"表示.与Python 3.5相比,新dict()的内存使用量减少了20%到25%.PEP 468(在函数中保留**kwargs的顺序.)由此实现.这个新实现的顺序保留方面被认为是一个实现细节,不应该依赖(这可能会在未来发生变化,但是在更改语言规范之前,希望在几种版本的语言中使用这个新的dict实现为所有当前和未来的Python实现强制命令保留语义;这也有助于保持与随机迭代顺序仍然有效的语言的旧版本的向后兼容性,例如Python 3.5).(由INADA Naoki在issue 27350中提供.最初由Raymond Hettinger提出的想法.)
2017年12月更新:Python 3.7 保证了dict保留插入顺序
map(function, iterable, ...)
Run Code Online (Sandbox Code Playgroud)
将函数应用于iterable的每个项目并返回结果列表.如果传递了其他可迭代参数,则函数必须采用那么多参数,并且并行地应用于所有迭代的项.
如果一个iterable比另一个短,则假定使用None项扩展.
如果是Nonefunction,则假定为identity函数; 如果有多个参数,则map()返回一个由包含所有迭代中相应项的元组组成的列表(一种转置操作).
可迭代参数可以是序列或任何可迭代对象; 结果始终是一个列表.
这在制作笛卡尔积的过程中扮演什么角色?
content = map(tuple, array)
Run Code Online (Sandbox Code Playgroud)
将元组放在哪里有什么影响?我也注意到,如果没有map函数,输出就是abc和它一样a, b, c.
我想完全理解这个功能.参考定义也很难理解.太多花哨的绒毛.