【问题标题】:why list comprehension is called so in python?为什么在python中如此调用列表理解?
【发布时间】:2009-12-14 22:32:11
【问题描述】:

我知道 python 不是第一个具有列表理解的语言。 我只是对这个名字的历史感兴趣。

我特别感兴趣的是为什么它被称为comprehension

【问题讨论】:

  • 正如 bodnarbm 所提到的,它有着悠久的历史。您会在许多函数式编程语言中找到列表推导式,在离散数学中也有类似的东西。

标签: python naming-conventions list-comprehension


【解决方案1】:

名字来源于set-comprehension的概念

理解在这里表示完全包含完整描述。集合理解是对集合的(通常是简短的)完整描述,而不是详尽的(并且可能是无限的)枚举。

【讨论】:

  • 但是为什么叫集合推导呢?
  • “comprehension”在这里表示“完全包含”或“完整描述”。集合理解是对集合的(通常是简短的)完整描述,而不是详尽的(并且可能是无限的)枚举。集合推导“{x∈N:x>2}”是所有大于 2 的自然数的无限集合。(按照惯例,大写的“N”被定义为表示自然数的集合,“∈”表示“ is of the set”,“:”表示“这样”,“{}”表示“集合”。)
  • 现在,Python 已经将列表解析语法推广到集合!
【解决方案2】:

“理解”过去不仅意味着“理解”,还意味着逻辑中的“包含”。牛津英语词典有以下内容:“I.4. 逻辑概念或概念中包含的属性的总和;内涵”作为第一个定义“包含,包含”下的第四个子定义。得知这种用法通过那里进入了数学史,我不会感到惊讶。在列表或集合理解中,程序员不是显式给出列表或集合的元素,而是用表达式描述他们所理解的(在“包含”意义上)。

【讨论】:

    【解决方案3】:

    【讨论】:

      【解决方案4】:

      维基百科页面的历史部分讨论了它的来源。 List_comprehension#History

      【讨论】:

      • 这是一个编程网站! bodnarbm 在通过对 wikipedia 文章的组合最大限度地重复使用方面做的是正确的事情。什么的。
      • 严格来说,“为什么在 python 中如此调用列表理解?”的答案是什么?是“因为这就是它在其他语言中的名称”。
      • 但是为什么它在其他语言中被如此调用而不是,比如列表“生成器”或其他东西?理解听起来很奇怪
      【解决方案5】:

      因为它是描述序列(数学和其他语言中的集合,Python 中的列表/序列)的一种非常全面的方式。

      【讨论】:

        猜你喜欢
        • 2020-01-01
        • 1970-01-01
        • 2016-11-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-12-31
        • 1970-01-01
        • 2020-03-12
        相关资源
        最近更新 更多