匹配所有内容的Python列表
我可能没有问清楚:我想要一个可以匹配任何列表的值,类似于(None,)
的“反向”效果,但即使用(None,)
也会把项匹配为None(我不想要这样)
关键是我有一个函数可以这样工作:[x for x in my_list if x[field] not in filter_list]
我希望能够过滤掉所有或不过滤任何东西,而不想做一些测试,比如:if filter_list==(None,): return []
和if filter_list==('*',): return my_list
附注:我想简化我的问题,结果导致了一些错误(list
标识符)或者一些愚蠢的东西[x for x in x]
;)
嗨,
我需要在Python中使用列表推导式进行一些过滤。
如果我这样做:
[x for x in list if x in (None,)]
我就能去掉所有值,这样没问题
但我希望有同样的方式来匹配所有内容
我可以这样做:
[x for x in list if x not in (None,)]
但这样和其他部分不一致
我尝试了一些方法,但例如(True,)
只匹配1
请注意,待过滤的值是数字,但如果你有一些通用的东西(比如(None,)
来匹配没有),那就太好了
谢谢
路易斯
7 个回答
3
你说的“我想要有一样的东西来匹配所有内容”是什么意思呢?
我想要有一样的东西来匹配所有内容。
只需要这样做:
[x for x in list]
这样,list
中的每一个项目都会被匹配上。
4
更好的写法应该是:
[x for x in lst if x is None]
[x for x in lst if x is not None]
5
__contains__
是一个特殊的方法,用来检查某个东西是否在一个序列里:
class everything(object):
def __contains__(self, _):
return True
for x in (1,2,3):
print x in everything()