如何在字符串中定义过滤器或表达式?

时间:2018-10-29 04:06:20

标签: python

如果我可以在变量中定义过滤器,那么可以使用该变量来过滤数据框或过滤器列表吗?

例如,我可以使用代码过滤列表:

l = [1,2,3,4,5]
f = [i for i in l if i > 3]
f

有没有一种方法可以在变量中定义过滤器? (下面的代码不起作用)

ft = repr('if i > 3')
f_repr = [i for i in l eval(ft)] 
f_repr

4 个答案:

答案 0 :(得分:3)

您可以使用lambda函数执行此操作。

ft=lambda i:i>3
f_repr=[i for i in l if ft(i)]
f_repr

答案 1 :(得分:2)

答案 2 :(得分:0)

使用numpy数组非常简单

f_repr = f[f>3]

答案 3 :(得分:-1)

使整个表达式成为字符串,然后eval

l = [1,2,3,4,5]
cond = 'if i > 3'
expr = f'[i for i in l {cond}]'
eval(expr) # => [4, 5]