Есть ли побочные эффекты в Python, использующих `if a == b == c: pass;`? - PullRequest
8 голосов
/ 10 июня 2011
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...

Возможно, есть лучший способ закодировать это?

Ответы [ 4 ]

12 голосов
/ 10 июня 2011

С документация :

Сравнения могут быть произвольно связаны; например, x

Не должно быть никаких побочных эффектов.

8 голосов
/ 10 июня 2011

Не должно быть никаких побочных эффектов, пока вы не используете его таким образом.

Но позаботьтесь о таких вещах, как:

if (a == b) == c:

, поскольку он разорвет цепочку, и вы будете сравнивать значения True или False и c).

5 голосов
/ 10 июня 2011
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])
0 голосов
/ 16 октября 2016

есть ли комментарии к 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 )
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...