Skip to main content
 首页 » 编程设计

python之如何在干净的语句中测试 3 个变量中的任意 2 个是否相等

2025年05月04日9落叶无声

我正在寻找一种更简洁的方法来进行以下类型的比较:

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