2 回答

TA貢獻(xiàn)1851條經(jīng)驗(yàn) 獲得超3個(gè)贊
內(nèi)部函數(shù)返回一個(gè)包含兩個(gè)值的元組,但外部函數(shù)需要兩個(gè)單獨(dú)的值。使用*-unpacking將元組的每個(gè)值作為單獨(dú)的參數(shù)傳遞:
# 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已經(jīng)采用了位置參數(shù)——(lambda a,b:print(a,b))可以只替換為print. 此外,Python3.8 引入了:=賦值運(yùn)算符,它通??梢杂脕泶?alambda來模擬let表達(dá)式。這顯著縮短了表達(dá)式:
# v print takes multiple arguments
print(*(x := '153', [int(i)**len(x) for i in x]))
# ^ assignment operator binds in current scope

TA貢獻(xiàn)1829條經(jīng)驗(yàn) 獲得超7個(gè)贊
使用給定的結(jié)構(gòu)發(fā)布了正確答案。但是,我想不出像您那樣使用兩個(gè) lambda 會有用的情況。定義一個(gè)函數(shù)將使代碼更具可讀性:
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")
添加回答
舉報(bào)