我想写一个方法,根据提供的操作符或函数来过滤给定的对象列表。在
现在我的方法如下:
def filter_by_names(objects, names, exclude=False):
if exclude:
return [obj for obj in objects if obj.name not in names]
else:
return [obj for obj in objects if obj.name in names]
现在它有两个过滤器选项,如果对象的名称在“提供的名称”列表中,则返回该对象;或者执行相反的操作:返回名称不在“提供的名称”列表中的对象。在
我想要的是能够动态地指定如何过滤。我虽然使用operator
库,但似乎没有not in
运算符,所以我需要将in
与{
我想用lambda就像:
^{pr2}$这个很管用,但我想知道有没有更好的方法来做这样的事情?对于lambda,我总是需要指定整个函数,即使我只需要不同的运算符。在
例如,使用xor运算符如何
这是因为equals的xor结果是false,而different的xor结果是true
使用
not exclude
(而不是(obj.name not in names) == exclude)
)编写它,可以为“exclude”传递任意的truthy/falsy值,而不仅仅是True或False。在从Pythonoperators开始。}应该足够给你想要的控制。然而,这将仅仅比您当前的代码短,并且结果更难阅读。另一方面,对于下一步要配置什么,这应该会给您提供很多可爱的想法。在
contains
和{相关问题 更多 >
编程相关推荐