Python3中是否存在a、b使(a in b and b in a)为True?
关于Python中
a in b and b in a为True的可能性 嘿,这个问题有点巧妙!答案是肯定存在的,我们可以利用Python里可变容器的引用特性来构造这样的变量对。
具体实现例子
我们可以用列表来创建循环引用:
# 初始化两个列表,先让b包含a a = [] b = [a] # 再把b添加到a中,形成互相包含的关系 a.append(b) # 验证结果 print(a in b) # 输出: True print(b in a) # 输出: True print(a in b and b in a) # 输出: True
原理说明
Python里的可变容器(比如列表、字典)存储的是对象的引用,而不是对象本身。上面的代码中:
b是一个列表,它的唯一元素就是a,所以a in b会返回True;a在添加b之后,它的唯一元素就是b,所以b in a也会返回True;- 两者同时满足,整个逻辑表达式自然就为True了。
这种循环引用在Python中是完全合法的,不过如果后续要对这类对象做序列化(比如用pickle)的时候可能需要额外处理,但单纯满足题目中的条件是完全没问题的。
内容的提问来源于stack exchange,提问作者user2952903
相关产品推荐
相关产品推荐

