从lambda表达式返回值

Kyl*_*e C 0 python lambda

我从SQLite数据库导入值,并希望在其中一列上运行lambda表达式来创建列表.

cur.execute('SELECT p, T FROM W')
data = cur.fetchall()

lst = list()
for row in data:
    p = float(row[0])
    T = float(row[1])
    lst.append(lambda T: p if T < 1 else 0)
Run Code Online (Sandbox Code Playgroud)

当我运行它时,输出是以下列表:

< function <lambda> at 0x00000255E52AA8C8> . 
Run Code Online (Sandbox Code Playgroud)

我想用的值追加列表pT<1和0,如果T> 1.

sch*_*ggl 5

没有lambda需要在所有:

lst.append(p if T < 1 else 0)
Run Code Online (Sandbox Code Playgroud)

三元表达本身就可以.为了获得lambda函数的返回值,必须调用它,沿着这些方向:

lst.append((lambda: p if T < 1 else 0)())
Run Code Online (Sandbox Code Playgroud)

当然,这是毫无意义的.lambda函数只能包含一个表达式.即时调用它会使函数过时,因为您回到了裸露的表达式.这就是为什么这些函数经常采用由函数传递到的上下文动态填充的参数.这个lambda甚至不需要参数,因为所有需要的部分都在那里,随时可以使用.