【问题标题】:What's going on behind the scenes in "".join(e[0] for e in phrase.split())?"".join(e[0] for e in phrase.split()) 的幕后发生了什么?
【发布时间】:2020-03-02 09:37:19
【问题描述】:

当我在 Java 方面的经验有限时,我是一名尝试学习 Python 的初学者,所以请耐心等待。

我可以区分代码各部分的用途。我知道我们基本上是将短语中每个单词的第一个字符连接到一个字符串中,从而有效地制作了一个首字母缩略词。我知道我们需要将短语解析为单词列表,并且对于每个单词我们可以弹出第一个字符,并且我们需要一个循环来做到这一点。好的,有道理。

但到底是什么?我们将一个 for 循环传递给一个连接函数?当 e[0] 在语法上不是 for 循环的一部分时,我可以看到它是如何在这里发挥作用的?

我想也许语法让我陷入了循环(请原谅双关语)。

【问题讨论】:

    标签: python string list split substring


    【解决方案1】:

    那是generator expression。它类似于list comprehension,不同之处在于它使用() 而不是[],并且计算结果为生成器而不是列表。它还可以利用现有的(),就像以前调用join的那些。

    "".join(e[0] for e in phrase.split())
    

    本质上等同于:

    "".join([e[0] for e in phrase.split()])  # A list comprehension
    

    或者,完全使用典型的for 循环来拼写:

    chars = []
    
    for e in phrase.split():
        chars.append(e[0])
    
    "".join(chars)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-10-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-12
      • 1970-01-01
      相关资源
      最近更新 更多