Ezio Melotti added the comment: As far as I understand, this is treated as "x < y < z" or "x == y == z":
>>> import ast >>> ast.dump(ast.parse("1 < 2 < 3")) 'Module(body=[Expr(value=Compare(left=Num(n=1), ops=[Lt(), Lt()], comparators=[Num(n=2), Num(n=3)]))]) >>> ast.dump(ast.parse("1 == 2 == 3")) 'Module(body=[Expr(value=Compare(left=Num(n=1), ops=[Eq(), Eq()], comparators=[Num(n=2), Num(n=3)]))])' >>> ast.dump(ast.parse("1 in 2 == 3")) 'Module(body=[Expr(value=Compare(left=Num(n=1), ops=[In(), Eq()], comparators=[Num(n=2), Num(n=3)]))])' The following code is also valid and works as expected: >>> 1 in [1] in [[1]] True >>> 2 not in [1] in [[1]] True Your example yields an unexpected result, but I'm not sure if and how it can be fixed. ---------- _______________________________________ Python tracker <rep...@bugs.python.org> <http://bugs.python.org/issue25484> _______________________________________ _______________________________________________ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com