我正在寻找一种更清洁的方法来进行以下类型的比较:
if x == y or y == z or x == z:
do something
尽管在这个小示例中这会很好,但我希望一次比较3个块(如上)中的24个变量。我很难找到一种更清洁的方式来发表这些声明。有任何想法吗?
编辑:使它看起来更多我想要清除的内容:
if(
#corner 1
cube[0] == cube[29] or
cube[0] == cube[42] or
cube[29] == cube[42] or
#corner 2
cube[2] == cube[9] or
cube[2] == cube[44] or
cube[9] == cube[44] or
#corner 3
...
#corner 8
...
):
doSomething
感谢Primusa的解决方案:
corner1 = [cube[0], cube[29], cube[42]]
corner2 = [cube[2], cube[9], cube[44]]
...
if(len(corner1) != len(set(corner1)) or
len(corner2) != len(set(corner2)) or
...)
dostuff
最佳答案
这是一种检查巨型列表中的两个值是否相等的简单方法(假设您的值是可哈希的):
biglist = [LOTS OF STUFF]
if len(biglist) != len(set(biglist)):
do stuff
set()是一个不能重复的python数据结构。结果,如果集合的长度!=列表的长度,则列表中必须存在重复项,因此值相等。
如果您的值不可散列,则可以编写一个辅助函数以使代码更好看:
def compare(x, y, z):
return x==y or y==z or x==z