匹配所有内容的Python列表

1 投票
7 回答
651 浏览
提问于 2025-04-15 17:44

我可能没有问清楚:我想要一个可以匹配任何列表的值,类似于(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()

撰写回答