Don';我不理解Python lambda函数语法
我不明白这种语法是如何工作的,也找不到关于它的文档:Don';我不理解Python lambda函数语法,python,function,conditional-statements,Python,Function,Conditional Statements,我不明白这种语法是如何工作的,也找不到关于它的文档: word = '123xyz567' s = ''.join (c if c.isdigit() else ' 'for c in word) 代码的第2行将采用xyz123,并通过传递lambda函数将其连接在一起,从而将“123 567”连接成一个字符串 但是,我对这种语法的工作原理感到困惑,通常python if-else语句是: def example(): for c in word: if c.isdig
word = '123xyz567'
s = ''.join (c if c.isdigit() else ' 'for c in word)
代码的第2行将采用xyz123,并通过传递lambda函数将其连接在一起,从而将“123 567”
连接成一个字符串
但是,我对这种语法的工作原理感到困惑,通常python if-else语句是:
def example():
for c in word:
if c.isdigit():
return c
else:
return ' '
有人能给我解释一下或指导我看一些文档吗?这些文档向我解释了传入
.join()
的lambda函数的语法结构,以及我如何正确使用它?这不是lambda,而是生成器表达式
几乎类似于列表理解,而是生成器文本
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>
list=[a代表[1,2,3]中的a]
生成器=(a代表[1,2,3]中的a)
打印(列表)#[1,2,3]
打印(生成器)#
显示的语法不是lambda
函数,而是生成器表达式。见:
您可以在此处阅读有关lambda
的更多信息:
您显示的def
函数无法与return
语句一起正常工作;使用yield
,使函数不会在第一个字符处跳出:
def example(word):
for c in word:
if c.isdigit():
yield c
else:
yield ' '
有关
收益率的更多信息,请参见:这里有几件事,没有一件是lambda
首先是generator表达式,其形式为:(for in)
在您的示例中,
是c,如果c.isdigit()是“
,
是c
,iterable
是word
它创建了一个生成器(这是一种iterable)来传递给str.join
第二件事是三元运算符,其形式为:if-else
在您的示例中,第一个
是c
,
是c.isdigit()
,第二个
是'
如果
的计算结果为True
,则返回第一个
,否则返回第二个
将所有内容放在一起,(c if c.isdigit()else''表示word中的c)
是一个生成器,具有word的所有字符,但非数字字符替换为单个空格(每个)。没有lambda函数。请浏览,并了解该网站的工作原理,帮助您改进当前和未来的问题,从而帮助您获得更好的答案。“教我这个语言功能”是堆栈溢出的主题。堆栈溢出不用于替换现有教程和文档。请注意,不应将list
用作变量名,因为它可能会覆盖内置项。