如何使用多个条件过滤Python列表?

Rob*_*ley 2 python list

我有这个列表理解,它返回列表中的元素,lst_fcflds如果它们不在列表中RROPFields:

nfld_rrop = [i for i in lst_fcflds if i not in RROPFields]

并且想要一个过滤器,这样如果OBJECTID或者 SHAPE在lst_fclfds中,它们也不会被返回 - 如:

nfld_rrop = [i for i in lst_fcflds if i not in RROPFields and not in ["OBJECTID","SHAPE"]]

Cor*_*mer 5

你只是错过了一个 i

nfld_rrop = [i for i in lst_fcflds if i not in RROPFields and i not in ["OBJECTID","SHAPE"]]
                                                              ^
Run Code Online (Sandbox Code Playgroud)

但是为了提高性能,我会首先添加一步来创建一个,set这样您就可以进行更快的成员资格查找.

filters = set(RROPFields + ["OBJECTID", "SHAPE"])
nfld_rrop = [i for i in lst_fcflds if i not in filters]
Run Code Online (Sandbox Code Playgroud)