【问题标题】:Are python sort keys guaranteed to be called only once?python排序键是否保证只被调用一次?
【发布时间】:2014-05-31 06:54:15
【问题描述】:

在回答another question 时,我最终创建了一个排序键函数,该函数修改了一个字典以保存状态,然后该状态将用于排序中的后续项目。

虽然我的回答 似乎 有效,但我的问题是:python 文档中是否真的定义了每个对象只能调用一次排序键?这是 Cpython 的实现细节吗?或者排序键实际上被调用了不止一次,而我得到正确答案只是出于运气?

sorted 的文档指出:

key 指定一个参数的函数,用于从每个列表元素中提取比较键:key=str.lower。默认值为None(直接比较元素)

我不认为这意味着 key 每个元素只会被调用一次......但它可以在其他地方说明。

显然我会问,因为这会对任何有副作用的排序键产生影响。

【问题讨论】:

    标签: python sorting


    【解决方案1】:

    来自您链接的文档部分:

    通常,密钥和反向转换过程比指定等效 cmp 函数要快得多。这是因为 cmp 会为每个列表元素调用多次,而 key 和 reverse 只触摸每个元素一次

    这似乎是一个“是”...

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多