people = ['Dr. Christopher Brooks', 'Dr. Kevyn Collins-Thompson', 'Dr. VG Vinod Vydiswaran', 'Dr. Daniel Romero']
def split_title_and_name(person):
return person.split()[0] + ' ' + person.split()[-1]
#option 1
for person in people:
print(split_title_and_name(person) == (lambda x: x.split()[0] + ' ' + x.split()[-1])(person))
何时何地使用上面的lambda参数。由于上面使用的lambda参数是x,但在lambda函数之后,person list被传递到一个括号中,该括号替代了x。
对于上面的代码,我得到了4True,因为列表中有4个项目。
#option 1
for person in people:
print(split_title_and_name(person) == (lambda person: person.split()[0] + ' ' + person.split()[-1]))
但是这段代码没有显示相同的结果。它给出了4个False
发布于 2019-06-05 09:06:27
(lambda x: x.split()[0] + ' ' + x.split()[-1])(person)
等同于以下代码:
def any_name(x):
return x.split()[0] + ' ' + x.split()[-1]
any_name(person)
如您所见,lambda
创建了一个匿名函数,该函数立即被调用并被丢弃;x
是形参,person
是实际参数。函数定义中形参的名称并不重要;它也可以是person
。
https://stackoverflow.com/questions/56453059
复制相似问题