2 回答
TA贡献1851条经验 获得超3个赞
内部函数返回一个包含两个值的元组,但外部函数需要两个单独的值。使用*-unpacking将元组的每个值作为单独的参数传递:
# v takes two parameters v provides one tuple of two values
(lambda a,b:print(a,b))(*(lambda x:(x,[int(i)**len(x) for i in x]))('153'))
# ^ unpack operator
请注意,它print已经采用了位置参数——(lambda a,b:print(a,b))可以只替换为print. 此外,Python3.8 引入了:=赋值运算符,它通常可以用来代替 alambda来模拟let表达式。这显着缩短了表达式:
# v print takes multiple arguments
print(*(x := '153', [int(i)**len(x) for i in x]))
# ^ assignment operator binds in current scope
TA贡献1829条经验 获得超7个赞
使用给定的结构发布了正确答案。但是,我想不出像您那样使用两个 lambda 会有用的情况。定义一个函数将使代码更具可读性:
def print_values(string):
values = [int(i)**len(string) for i in string]
print(string, values)
print_values("153")
或者如果你想让它更短:
def print_values(string):
print(string, [int(i)**len(string) for i in string])
print_values("153")
添加回答
举报