Делает ли это то, что я думаю, что он делает? Мне кажется, что да. Я прошу быть уверенным.
if n[i] == n[i+1] == n[i+2]:
return True
Являются ли они равными?
if n[i] == n[i+1] and n[i+1] == n[i+2]:
return True
Делает ли это то, что я думаю, что он делает? Мне кажется, что да. Я прошу быть уверенным.
if n[i] == n[i+1] == n[i+2]:
return True
Являются ли они равными?
if n[i] == n[i+1] and n[i+1] == n[i+2]:
return True
Он эквивалентен, но не равен, поскольку обращения выполняются только один раз. Естественно, реляционные операторы цепей Python (включая in
и is
).
Самый простой способ показать небольшую разницу:
>>> print(1) == print(2) == print(3)
1
2
3
True
>>> print(1) == print(2) and print(2) == print(3)
1
2
2
3
True
Да, однако, когда сравнения скованы, общее выражение оценивается один раз, когда используется, and
оно оценивается дважды. В обоих случаях второе сравнение не оценивается, если первая ложна, пример из документов:
Сравнение может быть скопировано произвольно, например, x <y <= z эквивалентно x <y и y <= z, за исключением того, что y оценивается только один раз (но в обоих случаях z вообще не оценивается при x <y быть ложным).
да, вы правы.
вы также можете сделать
5 > x > 1
или
1 < x < 5
Да, в внутренних компонентах python операторы сравнения возвращаются, а true не являются ни ложными, но вместо этого возвращают объект "результат сравнения" (не помню имя класса, это было уже в прошлом), и этот объект предоставляет _lt_, _gt _, _eq _ и т.д. и стать "ответственными" за конечный результат (а "результат сравнения" отличает True или False в конце выражение). Что волшебство семантического управления python предоставляет вам:)
Как утверждают другие, ответ - да. Однако: остерегайтесь добавления круглых скобок. Например:
>>> 1 == 2 == 0
False
>>> (1 == 2) == 0
True
Во втором случае (1 == 2)
оценивается как False
, а затем False == 0
значение True
, поскольку Python позволяет сравнивать логические значения с целыми числами.
Точно так же:
>>> 0 == 0 == 1
False
>>> (0 == 0) == 1
True
Вы можете использовать набор set для проверки равенства
len(set({a,b,c}) == 1