451

How would you say "does not equal"?

if hi == hi:
    print "hi"
elif hi (does not equal) bye:
    print "no hi"

Is there something similar to == that means "not equal"?

4
  • 6
    Are you asking about else, != (optionally <>) or is not? Commented Jun 16, 2012 at 3:25
  • 22
    Attention that <> doesn't work any more in python 3, so use != Commented Mar 7, 2016 at 10:38
  • 4
    from python documentation: Python3 : The operators <, >, ==, >=, <=, and != compare the values of two objects. docs.python.org/3/reference/expressions.html#value-comparisons Commented Nov 7, 2016 at 13:00
  • 1
    from python documentation: python2: docs.python.org/2/reference/expressions.html#not-in Commented Nov 7, 2016 at 13:05

10 Answers 10

702

Use !=. See comparison operators. For comparing object identities, you can use the keyword is and its negation is not.

e.g.

1 == 1 #  -> True
1 != 1 #  -> False
[] is [] #-> False (distinct objects)
a = b = []; a is b # -> True (same object)
Sign up to request clarification or add additional context in comments.

4 Comments

How would you compare two binary data?
Just some info, PEP401 mentioned in the comments was an April Fool joke. <> is not supported in Python3 now.
@LéoLéopoldHertz준영 Did not know that you can compare binary data. I thought that objects are the most you can compare.
75

Not equal != (vs equal ==)

Are you asking about something like this?

answer = 'hi'

if answer == 'hi':     # equal
   print "hi"
elif answer != 'hi':   # not equal
   print "no hi"

This Python - Basic Operators chart might be helpful.

Comments

32

There's the != (not equal) operator that returns True when two values differ, though be careful with the types because "1" != 1. This will always return True and "1" == 1 will always return False, since the types differ. Python is dynamically, but strongly typed, and other statically typed languages would complain about comparing different types.

There's also the else clause:

# This will always print either "hi" or "no hi" unless something unforeseen happens.
if hi == "hi":     # The variable hi is being compared to the string "hi", strings are immutable in Python, so you could use the 'is' operator.
    print "hi"     # If indeed it is the string "hi" then print "hi"
else:              # hi and "hi" are not the same
    print "no hi"

The is operator is the object identity operator used to check if two objects in fact are the same:

a = [1, 2]
b = [1, 2]
print a == b # This will print True since they have the same values
print a is b # This will print False since they are different objects.

Comments

15

You can use both != or <>.

However, note that != is preferred where <> is deprecated.

2 Comments

<> no longer exists in Python 3, you can only use !=.
8

Seeing as everyone else has already listed most of the other ways to say not equal I will just add:

if not (1) == (1): # This will eval true then false
    # (ie: 1 == 1 is true but the opposite(not) is false)
    print "the world is ending" # This will only run on a if true
elif (1+1) != (2): #second if
    print "the world is ending"
    # This will only run if the first if is false and the second if is true
else: # this will only run if the if both if's are false
    print "you are good for another day"

in this case it is simple switching the check of positive == (true) to negative and vise versa...

Comments

1

You can use the != operator to check for inequality.

Moreover in Python 2 there was <> operator which used to do the same thing, but it has been deprecated in Python 3.

1 Comment

1

The standard operator module holds ne method which is a wrapper for != a.k.a. not equal operator.

import operator
operator.ne(1, 1)   # False
operator.ne(1, 3)   # True

This is especially useful if you need to make comparisons in a setting where a function is expected.

a = [1, 2, 3, 4]
b = [2, 2, 3, 3]
list(map(operator.ne, a, b))  # [True, False, False, True]

Comments

0

There are two operators in Python for the "not equal" condition -

a.) != If values of the two operands are not equal, then the condition becomes true. (a != b) is true.

b.) <> If values of the two operands are not equal, then the condition becomes true. (a <> b) is true. This is similar to the != operator.

Comments

0

You can use "is not" for "not equal" or "!=". Please see the example below:

a = 2
if a == 2:
   print("true")
else:
   print("false")

The above code will print "true" as a = 2 assigned before the "if" condition. Now please see the code below for "not equal"

a = 2
if a is not 3:
   print("not equal")
else:
   print("equal")

The above code will print "not equal" as a = 2 as assigned earlier.

4 Comments

Note that is not won't work for string comparison
This answer is simply wrong; is and is not do not test equality, they test identity.
@kaya3, please help me to understand why "is not" will not work for my example.
I suggest you read this other Q&A: stackoverflow.com/questions/13650293/…
-2

Use != or <>. Both stands for not equal.

The comparison operators <> and != are alternate spellings of the same operator. != is the preferred spelling; <> is obsolescent. (Reference: Python language reference)

2 Comments

You may link to that reference, preferably with page anchors. But ************** without ************** "Edit:", "Update:", or similar - the answer should appear as if it was written today.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.