我有一个列表L,如果x是L的成员,x in L的计算结果为True,我可以使用什么来代替L,以便x in smth将独立于x的值计算为True?
所以,我需要一些东西,它包含所有的对象,包括它本身,因为x也可以是这个"smth“。
发布于 2011-02-02 23:41:32
class Universe:
def __contains__(_,x): return True发布于 2011-02-02 23:42:47
您可以继承内置的list类,并重新定义在执行诸如item in list之类的测试时调用的__contains__方法
>>> class my_list(list):
def __contains__(self, item):
return True
>>> L = my_list()
>>> L
[]
>>> x = 2
>>> x
2
>>> x in L
True发布于 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请看以下内容:
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 )然而,这不是一个严格的集合理论对象,因为其内容实际上包含对父对象的引用。如果您要求对象按照上面的证明是不同的,这是不可能发生的。
https://stackoverflow.com/questions/4876399
复制相似问题