我正在寻找一种更简洁的方法来进行以下类型的比较:
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
