if a == b == c:
# do something
我们假设a, b, c
是字符串变量。当且仅当所有三个字符串相等时,如果我使用上面的代码段执行# do something
,是否有任何可能的副作用?
我在问,因为我必须互相检查三个变量,并且我得到很多案例:
if a == b == c:
# do something
elif a == b != c:
# do something
elif a != b == c.
# do something
etc...
也许有更好的方法对此进行编码?
答案 0 :(得分:12)
比较可以任意链接;例如,x< y< = z等于x< y和y< = z,除了y仅被评估一次(但在两种情况下,当x< y被发现为假时,根本不评估z。)
应该没有副作用。
答案 1 :(得分:8)
在以这种方式使用之前,不应有任何副作用。
但请注意以下事项:
if (a == b) == c:
因为它会断开链接,您将比较True
或False
和c
值。
答案 2 :(得分:5)
s = set([a, b, c])
if len(s) == 1:
print 'All equal'
elif len(s) == 3:
print 'All different'
else:
l = list(s)
print '%s and %s are different' % (l[0], l[1])
答案 3 :(得分:-1)
对x!= y!= z?
有任何评论我可以用愚蠢的方式得到正确答案。
def aligndigits(list):
return ((x, y , z ) for x in list for y in list for z in list if x != y and y != z and x != z )