不懂 Python lambda 函数语法

Alp*_*ega 3 python function conditional-statements

我不明白这个语法是如何工作的,也找不到关于它的文档:

word = '123xyz567'
s = ''.join (c if c.isdigit() else ' 'for c in word)
Run Code Online (Sandbox Code Playgroud)

代码的第 2 行将采用 xyz123 并"123 567"通过传入一个要连接的 lambda 函数将它们连接成一个字符串

但是,我对这种语法的工作方式感到困惑,通常是一个 python if-else 语句:

def example():
    for c in word:
        if c.isdigit():
            return c
        else:
            return ' ' 
Run Code Online (Sandbox Code Playgroud)

有人可以解释或指导我查看向我解释传入的 lambda 函数的语法结构.join()以及我如何正确使用它的文档吗?

Işı*_*lan 5

那不是一个 lambda 表达式,而是一个生成器表达式。

https://www.python.org/dev/peps/pep-0289/

几乎就像一个列表理解,而是一个生成器文字。

list = [a for a in [1,2,3]]
generator = (a for a in [1,2,3])
print(list) # [1,2,3]
print(generator) # <generator object <genexpr> at 0x7f8ee3abd6d0>
Run Code Online (Sandbox Code Playgroud)

  • 请注意,您不应使用“list”作为变量名,因为它可能会覆盖内置变量。 (2认同)