This issue tracker has been migrated to GitHub, and is currently read-only.
For more information, see the GitHub FAQs in the Python's Developer Guide.

classification
Title: Why " True != 3 in [3] " is True?
Type: performance Stage: resolved
Components: Tests Versions: Python 3.11
process
Status: closed Resolution: not a bug
Dependencies: Superseder:
Assigned To: Nosy List: Antelx, steven.daprano
Priority: normal Keywords:

Created on 2021-07-28 07:37 by Antelx, last changed 2022-04-11 14:59 by admin. This issue is now closed.

Messages (3)
msg398354 - (view) Author: Antel (Antelx) Date: 2021-07-28 07:37
>>> (True != 3) in [3]
False
>>> True != (3 in [3])
False

>>> True != 3 in [3]
True
msg398359 - (view) Author: Steven D'Aprano (steven.daprano) * (Python committer) Date: 2021-07-28 09:10
Hi Antel, thank you for your submission but this is not a bug. This is a bug tracker for reporting bugs, not a help desk to ask for help understanding code. There are many forums where you can ask for help, I suggest that you could try places like the Python-List mailing list or Reddit.

https://mail.python.org/mailman/listinfo/python-list

https://www.reddit.com/r/learnpython/


The three code snippets you show are all correct.

In the first case, you are comparing True != 3, which is True, and then testing whether True is in [3], which it is not.

In the second you compute (3 in [3]), which is True, then test True != True, which is False.

Lastly you do a *chained comparison* `True != 3 in [3]` which is equivalent to `(True != 3) and (3 in [3])` which is True.
msg398360 - (view) Author: Steven D'Aprano (steven.daprano) * (Python committer) Date: 2021-07-28 09:14
BTW, chained comparisons are usually written like this:

    0 <= x <= 100

    a == b == c

    spam is eggs is None

or similar. They do look weird and confusing when they include the `in` operator. Best not to write chained comparisons involving the `in` operator or other strange combinations.
History
Date User Action Args
2022-04-11 14:59:48adminsetgithub: 88921
2021-07-28 09:14:19steven.dapranosetmessages: + msg398360
2021-07-28 09:10:48steven.dapranosetstatus: open -> closed

nosy: + steven.daprano
messages: + msg398359

resolution: not a bug
stage: resolved
2021-07-28 07:37:45Antelxcreate