首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何检验x是否是泛集的成员?

如何检验x是否是泛集的成员?
EN

Stack Overflow用户
提问于 2011-02-02 23:36:44
回答 3查看 858关注 0票数 5

我有一个列表L,如果x是L的成员,x in L的计算结果为True,我可以使用什么来代替L,以便x in smth将独立于x的值计算为True?

所以,我需要一些东西,它包含所有的对象,包括它本身,因为x也可以是这个"smth“。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-02-02 23:41:32

代码语言:javascript
运行
复制
class Universe:
    def __contains__(_,x): return True
票数 8
EN

Stack Overflow用户

发布于 2011-02-02 23:42:47

您可以继承内置的list类,并重新定义在执行诸如item in list之类的测试时调用的__contains__方法

代码语言:javascript
运行
复制
>>> class my_list(list):
    def __contains__(self, item):
        return True


>>> L = my_list()
>>> L
[]
>>> x = 2
>>> x
2
>>> x in L
True
票数 2
EN

Stack Overflow用户

发布于 2011-02-03 00:50:21

定理:没有万能集合。

证明。设X是一个集合,使得X = {\empty, x},其中x是域中每个可能的元素。问题来了,是X \in X吗?大多数集合都不是这样定义的,所以让我们定义一个新的集合Y。Y = {A \in X; A \notin A}Y是不属于自己的所有集合的集合。

那么,Y \in Y呢?好吧,我们将Y定义为所有不属于自己的集合,所以Y不能存在于Y中,这与我们的假设相矛盾。

现在假设Y不在Y中,现在A肯定包含Y,因为Y本身并不在Y中,但是Y的定义是这样的,如果我们定义Y在Y中,我们就和我们自己的定义相矛盾。

因此,不存在包含所有集合的集合。这就是所谓的Russell's Paradox

那么,为什么要以编程的方式创建一个违反集合论者证明和测试的结果的对象呢?集合论者比我聪明得多。如果这是我的面试,这就是我的答案,如果他们坚持认为这是可能的,我会建议解释问题域是什么,因为从概念上讲,罗素已经从根本上证明了这是不可能的。

如果您想要一个用户友好的问题,通常是为学习入门集合论的人提出的,请尝试Barber Paradox

PythonEditPython.PythonEdityPython.PythonEditePython.Python.PythonEditePython.Python.PythonEdityPython.Python.PythonEditePython.PythonEdityPython.Python.PythonEditePython.Python.PythonEditedPython.Python.Python.PythonEdityPython.Python请看以下内容:

代码语言:javascript
运行
复制
class Universal(object):
    def __init__(self):
        self.contents = []

    def add(self, x):
        self.contents.append(x)

    def remove(self, x):
        self.contents.remove(x)

    def __contains__(self, x):
        return ( x in self.contents )

然而,这不是一个严格的集合理论对象,因为其内容实际上包含对父对象的引用。如果您要求对象按照上面的证明是不同的,这是不可能发生的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4876399

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档