在“” .join(e.0在element.split()中的e [0]的幕后发生了什么?

0 python string split substring list

当我的Java经验有限时,我是一个尝试学习Python的初学者,所以请在这里忍受。

我可以区分代码各部分的目的。我知道我们实际上是将词组中每个单词的第一个字符连接到一个字符串中,因此实际上是首字母缩写词。我知道我们需要将短语解析为单词列表,并且对于每个单词,我们都可以弹出第一个字符,并且需要循环才能做到这一点。好吧,有道理。

但是到底呢?我们将for循环传递给join函数吗?当我在语法上不属于for循环的一部分时,我可以看到e [0]在这里如何发挥作用?

我认为语法可能使我陷入困境(对不起)。

Car*_*ate 5

那是一个生成器表达式。它类似于列表推导,不同之处()在于它使用代替[],并且计算为生成器而不是列表。它也可以利用现有的(),就像用来调用的那样join

"".join(e[0] for e in phrase.split())
Run Code Online (Sandbox Code Playgroud)

本质上等同于:

"".join([e[0] for e in phrase.split()])  # A list comprehension
Run Code Online (Sandbox Code Playgroud)

或者,使用典型for循环将其完全阐明:

chars = []

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

"".join(chars)
Run Code Online (Sandbox Code Playgroud)