Python 如何测试x是否是通用集合的成员?

Python 如何测试x是否是通用集合的成员?,python,math,Python,Math,我有一个列表L,如果x是L的一个成员,则L中的x计算结果为真。在smth中x将根据x的值独立计算为真,我可以使用什么来代替L 所以,我需要一些东西,它包含所有对象,包括它本身,因为x也可以是这个“smth”。您可以从内置的列表类继承,并重新定义\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu包含方法,当您执行类似于列表中的项的测试时调用该方法: >>> class my_list(list): def __cont

我有一个列表L,如果x是L的一个成员,则L中的
x
计算结果为真。在smth中
x
将根据x的值独立计算为真,我可以使用什么来代替L


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

您可以从内置的
列表
类继承,并重新定义
\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu包含
方法,当您执行类似于
列表中的
项的测试时调用该方法:

>>> class my_list(list):
    def __contains__(self, item):
        return True


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

定理:没有普适集

证明。设
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中,我们与我们自己的定义相矛盾

因此,不存在所有集合的集合。这被称为

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

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

编辑:Python允许您实现包含自身的对象。见此:

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 )

但是,这不是严格的集合论对象,因为内容实际上包含对父对象的引用。如果您根据上述证明要求对象是不同的,这是不可能的。

您的意思是什么?类似于[x]
中的
x的东西?这种东西的用例是什么?如果L中的x总是True,为什么不能用True替换L中的x呢?@falmari:假设一个容器类提供了一个过滤接口,它想要一个定义了
in
的对象,而不是一个谓词。请注意,这可能会产生多个宇宙,每个宇宙都包含所有其他元素。类固醇理论!一个集合不能包含所有其他集合。没有通用的集合。因此,你不能有多个“宇宙”集合,因为你首先不能有一个单一的宇宙集合。这基本上是一种python式的方式,只回答查询的
True
——你没有属于宇宙的x的规则——这基本上是falmari的建议-1.@Ninefingers:这不是一个真正意义上的集合论构造,也不是一个容器
Universe()
满足OP对
smth
的要求,即“使用而不是
L
,以便smth中的
x
将根据
x
的值独立地评估为
True
”Hmmm。也许我有点苛刻。它的评估结果确实符合要求,我会告诉你的。Python实际上也可以让你实现一个包含自身的集合。在一个计算机程序中,我还可以证明存在这样的素数,它们不同于通常的序列{2,3,5,7,11,…}。说真的,任何集合论都只是人性、感知和物理环境的产物。有许多集合理论(非天真的,非ZFC),它们假设一个普适集合的存在;也就是说,它取决于你假设的公理。素数是我们在通常的工作系统中给不可约量起的名字,但是产生一套完全不同的公理是可以接受的,这会导致不同的“数”是不可约的。然而,我要说的是,大多数人都有一套共同的假设。ZFC似乎是大多数人都喜欢的;这是教给本科生的。
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 )