TutorialsTonight Logo

Python Conditional Assignment

When you want to assign a value to a variable based on some condition, like if the condition is true then assign a value to the variable, else assign some other value to the variable, then you can use the conditional assignment operator.

In this tutorial, we will look at different ways to assign values to a variable based on some condition.

1. Using Ternary Operator

The ternary operator is very special operator in Python, it is used to assign a value to a variable based on some condition.

It goes like this:

Here, the value of variable will be value_if_true if the condition is true, else it will be value_if_false .

Let's see a code snippet to understand it better.

You can see we have conditionally assigned a value to variable c based on the condition a > b .

2. Using if-else statement

if-else statements are the core part of any programming language, they are used to execute a block of code based on some condition.

Using an if-else statement, we can assign a value to a variable based on the condition we provide.

Here is an example of replacing the above code snippet with the if-else statement.

3. Using Logical Short Circuit Evaluation

Logical short circuit evaluation is another way using which you can assign a value to a variable conditionally.

The format of logical short circuit evaluation is:

It looks similar to ternary operator, but it is not. Here the condition and value_if_true performs logical AND operation, if both are true then the value of variable will be value_if_true , or else it will be value_if_false .

Let's see an example:

But if we make condition True but value_if_true False (or 0 or None), then the value of variable will be value_if_false .

So, you can see that the value of c is 20 even though the condition a < b is True .

So, you should be careful while using logical short circuit evaluation.

While working with lists , we often need to check if a list is empty or not, and if it is empty then we need to assign some default value to it.

Let's see how we can do it using conditional assignment.

Here, we have assigned a default value to my_list if it is empty.

Assign a value to a variable conditionally based on the presence of an element in a list.

Now you know 3 different ways to assign a value to a variable conditionally. Any of these methods can be used to assign a value when there is a condition.

The cleanest and fastest way to conditional value assignment is the ternary operator .

if-else statement is recommended to use when you have to execute a block of code based on some condition.

Happy coding! 😊

Datagy logo

  • Learn Python
  • Python Lists
  • Python Dictionaries
  • Python Strings
  • Python Functions
  • Learn Pandas & NumPy
  • Pandas Tutorials
  • Numpy Tutorials
  • Learn Data Visualization
  • Python Seaborn
  • Python Matplotlib

Python If-Else Statements with Multiple Conditions

  • November 11, 2022 November 11, 2022

Python If-Else Statements with Multiple Conditions Cover Image

Conditional statements, or if-else statements, allow you to control the flow of your code. Understanding the power of if-else statements allows you to become a stronger Python programmer. This is because they allow you to execute only certain parts of your code if a condition or multiple conditions are met. In this tutorial, you’ll learn how to use Python if-else statements with multiple conditions .

By the end of this tutorial, you’ll have learned:

  • How to use Python if-else statements with multiple conditions
  • How to check if all conditions are met in Python if-else statements
  • How to check if only some conditions are met in Python if-else statemens
  • How to write complex if-else statements with multiple conditions in Python

Table of Contents

Understanding Python if-else Statements

One of the benefits of Python is how clear the syntax is. This is also true for if-else statements, which follow simple English syntax in order to control flow of your program . Python if-else statements, allow you to run code if a condition is met. They follow the syntax shown below:

To better understand how Python handles multiple conditions, it’s important to understand how logical operators work. Let’s take a look at this next.

Understanding Logical Operators in Python

While Python provides many more comparison operators , in this tutorial we’ll focus on two: and and or . These comparison operators allow us to chain multiple conditions using logical statements. To break this down:

  • and ensures that both conditions are met, otherwise returning False
  • or ensures that at least one condition must be true, otherwise returning False

Now that we’ve covered some of the basics, let’s dive into how to use multiple conditions in Python if-else statements.

Using Multiple Conditions in Python if-else Statements

In Python if-else statements, we can use multiple conditions which can be used with logical and and or operators. Let’s take a look at how we can write multiple conditions into a Python if-else statement:

We can see that the first condition uses the logical and operator to check if both conditions are true. If this isn’t met, the else block is executed. Let’s dive into how these operators work in action.

Checking For Multiple Conditions to be True in Python if-else Statements

We can use Python if-else statements to check that all conditions are true by using one or more and statements. This allows us to check that every condition is true. If a single condition is not true, then the flow statement moves onto the next condition.

Let’s see how we can check if multiple conditions are true in Python:

Let’s break down what the code block above is doing:

  • A variable, age , is defined with the value 32
  • An if-else statement first checks if the age is 0 or older and less than 20. If either of these arent true, the next block is checked.
  • The elif statement checks if the age is between 20 and 30. If this isn’t true, the else block is executed

With and conditions, Python will check each item sequentially. If one condition is not true, Python will not need to check the others and move onto the next block.

This is actually the same as running the all() function in a block, which will check if all items that are passed into the function are True. We could rewrite the if-else statement above using the all() function, as shown below:

Checking For Some Conditions to be True in Python if-else Statements

The Python or operator can be used to check if only one condition is true. This can allow you to write programs which can, for example, check if a weekday is a weekend day or not. This can allow us to check if a value passed meets either condition. Let’s see what this looks like:

In the code block above, we wrote an if-else block that checks whether the weekday we passed in is either Saturday or Sunday. If neither of these conditions evaluate to be true, the else block is executed.

This is actually the same as using the Python any() function, which will check if any of the items passed in are true. Let’s see how we can re-write our if-else block using the any() function:

In the next section, you’ll learn how to write complex if-else statements that combine and and or in creative ways.

Writing Complex if-else Statements with Multiple Conditions

We can write complex if-else statements with multiple conditions that combine using and and or operators. This can be very helpful when you’re writing complex conditional code that allows for some conditions to be true, while enforcing others.

Let’s take a look at an example of how this works:

In the code block above, we wrap the or statement in brackets. This means that this or condition only applies to the code in the brackets. Following that, Python will check if the user is active.

Let’s take a look at what this conditional flow looks like:

  • Since age is 67, the code in the brackets will evaluate to True , since it meets the age >= 65 condition.
  • Python then checks if the user is active, which evaluates to True as well

By doing this, Python allows you write complex conditions. By combining and and or operators, you can write if-else statements without nesting your conditions.

In this tutorial, you learned how to write complex if-else statements with multiple conditions. Python if-else statements allow you to control the flow of your code. By using multiple conditions, you can write more sophisticated code.

You first learned how to check if all conditions were true, using the and operator. Then, you learned how to check if any conditions were true, using the or operator. Finally, you learned how to write complex if-else statements by combining and and or .

Additional Resources

To learn more about related topics, check out the tutorials below:

  • NumPy where: Process Array Elements Conditionally
  • Python While Loop with Multiple Conditions
  • Python if-else statements: Official Documentation

Nik Piepenbreier

Nik is the author of datagy.io and has over a decade of experience working with data analytics, data science, and Python. He specializes in teaching developers how to use Python for data science using hands-on tutorials. View Author posts

Leave a Reply Cancel reply

Your email address will not be published. Required fields are marked *

Save my name, email, and website in this browser for the next time I comment.

How to Check Multiple Conditions in a Python if statement

Author's photo

  • multiple conditions

Conditional statements are commands for handling decisions, which makes them a fundamental programming concept.  They help you selectively execute certain parts of your program if some condition is met.  In this article, we’ll tell you all you need to know about using multiple conditional statements in Python. And we’ll show you plenty of examples to demonstrate the mechanics of how it all works.

Python has a simple and clear syntax, meaning the code is easy to read and interpret.  This is especially true for conditional statements, which can almost be read like an English sentence.  This makes Python a great language to learn for beginners.  For those of you who are new to Python, consider taking our Python Basics course; it will kickstart your programming journey and give you solid foundational skills in Python.

Python if Statement

The starting point for handling conditions is a single if statement, which checks if a condition is true.  If so, the indented block of code directly under the if statement is executed.  The condition must evaluate  either True or False . If you’d like to learn the details of Python’s if statements, you’ll find more in this article on Python terms for beginners .  Part 2 of Python Terms for Beginners is also a worthwhile read when you’re just getting started with programming.

The if statement in Python takes the following form:

Before we go further, let’s take a look at the comparison operators.  In Python, there are six possibilities:

  • Equals: a == b
  • Not Equal: a != b
  • Less than : a < b
  • Less than or equal to: a <= b
  • Greater than : a > b
  • Greater than or equal to : a >= b

Note that the equals comparison operator ( == ) is different from the assignment operator ( = ).

Now let’s try evaluating an example condition:

Here, we set the variable temperature = 35 . In the next line, we test if this value is greater than 25, which returns the Boolean value True . Now let’s put this in an if statement:

The condition evaluates to true, which then executes the indented block ( print('Warm') ).  This example is equivalent to writing “If the temperature is greater than 25, print the word “Warm”. As you can see from the code, it’s quite like the written sentence!

Logical Operators

If we want to join two or more conditions in the same if statement, we need a logical operator. There are three possible logical operators in Python:

  • and – Returns True if both statements are true.
  • or – Returns True if at least one of the statements is true.
  • not – Reverses the Boolean value; returns False if the statement is true, and True if the statement is false.

To implement these, we need a second condition to test.  So, let’s create another variable and test if it’s above a threshold:

The or operator requires only one condition to be True . To show this, we’ll reduce the temperature and use the or comparison operator:

Notice that or only requires one condition to evaluate to True .  If both conditions evaluate to True , the indented block of code directly below will still be executed.

The not operator can seem a little confusing at first, but it just reverses the truth value of a condition.  For example:

We can use it to test if the temperature is colder (i.e. not hotter) that a threshold:

Using these as building blocks, you can start to put together more complicated tests:

This if statement is equivalent to “If temperature is greater than 30 (i.e. evaluates false) OR humidity is less than 70 (evaluates to true) and it’s not raining (evaluates to true) , then write …”. In code, it might look like this:

Python’s if-elif-else Statements

So, what happens when the condition in the if statement evaluates to False?  Then we can check multiple conditions by simply adding an else-if statement, which is shortened to elif in Python.  Here’s an example using elif to define different temperature categories:

Notice the use of the comparison operator > in the if statement and of <= in the elif statement. The second operator means if the temperature is 30 exactly, it belongs to the ' Warm ' category. The final step is to add an else at the end, which captures everything else not defined in the if and elif conditions.

The final else statement handles anything else that does not fall within the other statements. In this case, temperature <= 20 will print ' Cool '.  Also note that the elif statement can be written more concisely in Python (in this example, 20 < temperature <= 30 ).

If you wanted to make more categories, you could add more elif statements. The elif and else statements are optional. But it’s always good form to finish with an else statement, to make sure anything unexpected is still captured.  This can be useful for debugging more complicated conditional statements.  For example, if we’re quantifying the amount of rain in millimeters per hour, we could do something like this:

Having the final else statement here will alert you if there is an unexpected error somewhere, e.g. a negative value.

Now That You Know Multiple Conditions in Python …

Now you should have all you need to know to start implementing multiple conditional statements in Python.  These examples were designed to show you the basics of how these statements work, so take the next step and extend what you’ve learnt here.  For example, try combining if-elif-else statements in a loop.  Define a list of values, loop through them, and test their values.  If you need some background material on for loops in Python, check out How to Write a For Loop in Python .

If you’re interested in learning more about data structures in Python, we’ve got you covered.  In Arrays vs. Lists in Python , we explain the difference between those two structures.  We also have an article that goes into detail on lists, tuples and sets  and another that explains the dictionary data structure in Python .  With a bit of practice, you’ll soon master Python’s conditions, loops, and data structures.

You may also like

python multiple conditional assignment

How Do You Write a SELECT Statement in SQL?

python multiple conditional assignment

What Is a Foreign Key in SQL?

python multiple conditional assignment

Enumerate and Explain All the Basic Elements of an SQL Query

A Comprehensive Guide to Using Conditionals in Python with Real-World Examples

Conditionals are a fundamental concept in programming that allow code to execute differently based on certain conditions. In Python, conditionals take the form of if , elif , and else statements. Mastering conditionals is key to writing dynamic, flexible programs that can handle different scenarios and make decisions.

This comprehensive guide will provide a deep dive into using conditionals in Python for real-world applications. We will cover the following topics:

Table of Contents

Basic syntax and structure of conditionals, comparison operators, logic operators, if statements, if-else statements, if-elif-else statements, nested conditionals, ternary operator, common errors and mistakes, user input validation, handling different user types, recommendation systems, data analysis and visualization, game design and gameplay logic.

The basic syntax for an if statement in Python is:

The condition can be any expression that evaluates to True or False. The code block indented under the if statement runs only when the condition is True.

Some key points:

  • The condition follows the if keyword and ends with a colon (:)
  • The code block after the condition is indented (usually 4 spaces)
  • if , elif , and else are lowercase
  • Code blocks end when the indentation returns to the left margin

Let’s look at a simple example:

Here we check if the value of age is greater than or equal to 18. If so, we print a message saying the person can vote. The print statement is indented under the if to indicate it runs conditionally.

Comparison operators allow us to compare two values and evaluate to True or False. They are essential for writing conditional expressions.

OperatorDescriptionExample
Equal to evaluates to True
Not equal to evaluates to True
Greater than evaluates to True
Less than evaluates to True
Greater than or equal to evaluates to True
Less than or equal to evaluates to True

Here are some examples of using comparison operators in conditional statements:

We can also chain multiple comparisons using logic operators like and and or .

Logic operators allow us to combine multiple conditional expressions and evaluate the overall logic.

The two main logic operators are:

  • and - Both conditions must be True for overall expression to be True
  • or - Either one condition must be True for overall expression to be True

Both age >= 18 and citizen must be True for the print statement to execute.

Other logical operators include:

  • not - Negates or flips the Boolean value
  • in - Checks if a value is present in a sequence
  • not in - Checks if a value is not present

Logic operators allow us to handle complex conditional logic in a concise way.

The if statement is used when we want to execute code only when some condition is fulfilled. For example:

Here we only want to print “Great job!” when the score is 80 or higher. The if statement allows us to specify this condition.

Some things to note about if statements:

  • They execute the code block only when condition evaluates to True
  • The condition can use any comparison or logical operators
  • We can use complex logic by chaining multiple conditions with and , or , not
  • The code block must be indented under the if statement

Let’s look at some more examples:

The if statement allows us to execute code conditioned on any criteria we specify in the conditional expression.

The if-else statement extends the simple if by allowing us to specify code that executes when the condition evaluates to False.

The syntax is:

Let’s look at an example:

Here if age is less than 18, we print a different message using the else block.

Key points on if-else :

  • The else can only be used after an if statement
  • The else block runs when the if condition is False
  • We can chain multiple elif blocks for more conditions (see next section)
  • Only one code block will execute - either if or else

More examples:

The if-else statement allows us to conditionally run different code blocks based on the evaluation of the condition expression.

The elif statement is used to chain multiple conditional checks. Using elif we can have multiple conditions evaluated in order.

This allows us to check many conditions and selectively run code for each case. For example:

Here we check the score against multiple grade thresholds. First if to check for A, then elif to check for B, etc. The final else acts as a default case if none match.

Some key points on if-elif-else :

  • Only one block will execute
  • Each condition is checked in order
  • elif lets us chain multiple conditions
  • The else block is optional

The elif conditionals allow us to concisely handle multiple scenarios without writing nested if statements.

Nested conditionals refer to if statements within if statements. We can nest conditionals indefinitely to handle complex logic.

For example:

The outer if checks age, and the inner if-else selectively prints messages for students vs non-students.

Nested conditionals are useful when:

  • We want to check secondary conditions after initial condition passes
  • Breaking down complex conditional logic into simple steps
  • Handling specific cases before handling general cases

However, deeply nested conditionals can make code hard to read. In those cases, functions may be better for readability.

The ternary operator provides a compact syntax for basic conditional logic:

This condenses a basic if-else check into one line.

Some points on ternary operator usage:

  • Best for simple one line conditionals
  • Hard to read for complex logic
  • Can be nested but not recommended
  • Has form value_if_true if condition else value_if_false

The ternary operator is ideal for quick conditional assignments or returning values conditionally from functions.

Some common errors when using conditionals include:

  • Forgetting colons : after conditionals
  • Indentation errors with code blocks
  • Using assignment = instead of comparisons ==
  • Misspellings in conditionals like adn , ro , etc.
  • Missing parentheses around conditions
  • Checking equality on two different types

These often cause syntax errors or unexpected logic errors. Always double check the condition expressions and indentations when debugging conditional issues.

Proper code commenting and leaving notes during coding can help identify issues with complex conditional statements. Start small and test conditionals thoroughly when chaining many elif clauses.

Real-World Examples and Exercises

Next we’ll explore some real-world examples to illustrate how conditionals are used in Python programming for tasks like user input validation, handling different user types, recommendation engines, data analysis, game design, and more.

Validating user input is crucial for many programs. For example:

We first check if the input is a digit, then convert to an integer. Next we check if age meets the 18+ requirement for access. The else handles any non-digit input.

Here are some other user input validation examples:

Careful input validation prevents bugs and errors down the line.

We can use conditionals to handle different features or pricing for various user types:

Different access levels can also be handled:

Conditionals allow flexible user handling in large applications.

Many recommendation systems use conditional logic to provide personalized suggestions based on certain factors. For example:

Products can be intelligently recommended using if-elif conditional chains.

When analyzing and visualizing data in Python, we can use conditionals to handle missing data or special cases:

Conditionals help account for incomplete data and customize data visualization.

Games make heavy use of conditionals to implement gameplay mechanics, physics, ballistics, animations, etc.

This implements a basic combat loop with damage dealt conditionally based on hit chance rolls. The end condition checks remaining health to determine winner.

Many other gameplay elements can be implemented using conditionals - physics, animations, resource management, abilities, etc.

Conditionals allow us to execute code selectively based on Boolean logic and are a core programming concept in any language. Python provides an intuitive syntax using if , else , elif for implementing conditional code execution.

In this guide, we covered the basics of conditionals in Python including operators, complex conditional chains, nesting conditionals, ternary expressions, and common errors. We examined real-world examples of using conditional logic for input validation, handling user types, recommendation systems, data analysis, and game mechanics.

Conditionals enable you to write dynamic, flexible programs that can make intelligent decisions and handle varying scenarios. Mastering their usage takes practice, but being comfortable with conditional logic will enable you to take on more advanced programming tasks.

  •     python
  •     control-flow

How to Use Conditional Statements in Python – Examples of if, else, and elif

Oluseye Jeremiah

Conditional statements are an essential part of programming in Python. They allow you to make decisions based on the values of variables or the result of comparisons.

In this article, we'll explore how to use if, else, and elif statements in Python, along with some examples of how to use them in practice.

How to Use the if Statement in Python

The if statement allows you to execute a block of code if a certain condition is true. Here's the basic syntax:

The condition can be any expression that evaluates to a Boolean value (True or False). If the condition is True, the code block indented below the if statement will be executed. If the condition is False, the code block will be skipped.

Here's an example of how to use an if statement to check if a number is positive:

In this example, we use the > operator to compare the value of num to 0. If num is greater than 0, the code block indented below the if statement will be executed, and the message "The number is positive." will be printed.

How to Use the else Statement in Python

The else statement allows you to execute a different block of code if the if condition is False. Here's the basic syntax:

If the condition is True, the code block indented below the if statement will be executed, and the code block indented below the else statement will be skipped.

If the condition is False, the code block indented below the else statement will be executed, and the code block indented below the if statement will be skipped.

Here's an example of how to use an if-else statement to check if a number is positive or negative:

In this example, we use an if-else statement to check if num is greater than 0. If it is, the message "The number is positive." is printed. If it is not (that is, num is negative or zero), the message "The number is negative." is printed.

How to Use the elif Statement in Python

The elif statement allows you to check multiple conditions in sequence, and execute different code blocks depending on which condition is true. Here's the basic syntax:

The elif statement is short for "else if", and can be used multiple times to check additional conditions.

Here's an example of how to use an if-elif-else statement to check if a number is positive, negative, or zero:

Use Cases For Conditional Statements

Example 1: checking if a number is even or odd..

In this example, we use the modulus operator (%) to check if num is evenly divisible by 2.

If the remainder of num divided by 2 is 0, the condition num % 2 == 0 is True, and the code block indented below the if statement will be executed. It will print the message "The number is even."

If the remainder is not 0, the condition is False, and the code block indented below the else statement will be executed, printing the message "The number is odd."

Example 2: Assigning a letter grade based on a numerical score

In this example, we use an if-elif-else statement to assign a letter grade based on a numerical score.

The if statement checks if the score is greater than or equal to 90. If it is, the grade is set to "A". If not, the first elif statement checks if the score is greater than or equal to 80. If it is, the grade is set to "B". If not, the second elif statement checks if the score is greater than or equal to 70, and so on. If none of the conditions are met, the else statement assigns the grade "F".

Example 3: Checking if a year is a leap year

In this example, we use nested if statements to check if a year is a leap year. A year is a leap year if it is divisible by 4, except for years that are divisible by 100 but not divisible by 400.

The outer if statement checks if year is divisible by 4. If it is, the inner if statement checks if it is also divisible by 100. If it is, the innermost if statement checks if it is divisible by 400. If it is, the code block indented below that statement will be executed, printing the message "is a leap year."

If it is not, the code block indented below the else statement inside the inner if statement will be executed, printing the message "is not a leap year.".

If the year is not divisible by 4, the code block indented below the else statement of the outer if statement will be executed, printing the message "is not a leap year."

Example 4: Checking if a string contains a certain character

In this example, we use the in operator to check if the character char is present in the string string. If it is, the condition char in string is True, and the code block indented below the if statement will be executed, printing the message "The string contains the character" followed by the character itself.

If char is not present in string, the condition is False, and the code block indented below the else statement will be executed, printing the message "The string does not contain the character" followed by the character itself.

Conditional statements (if, else, and elif) are fundamental programming constructs that allow you to control the flow of your program based on conditions that you specify. They provide a way to make decisions in your program and execute different code based on those decisions.

In this article, we have seen several examples of how to use these statements in Python, including checking if a number is even or odd, assigning a letter grade based on a numerical score, checking if a year is a leap year, and checking if a string contains a certain character.

By mastering these statements, you can create more powerful and versatile programs that can handle a wider range of tasks and scenarios.

It is important to keep in mind that proper indentation is crucial when using conditional statements in Python, as it determines which code block is executed based on the condition.

With practice, you will become proficient in using these statements to create more complex and effective Python programs.

Let’s connect on Twitter and Linkedin .

Data Scientist||Machine Learning Engineer|| Data Analyst|| Microsoft Student Learn Ambassador

If you read this far, thank the author to show them you care. Say Thanks

Learn to code for free. freeCodeCamp's open source curriculum has helped more than 40,000 people get jobs as developers. Get started

Python - if, elif, else Conditions

By default, statements in the script are executed sequentially from the first to the last. If the processing logic requires so, the sequential flow can be altered in two ways:

Python uses the if keyword to implement decision control. Python's syntax for executing a block conditionally is as below:

Any Boolean expression evaluating to True or False appears after the if keyword. Use the : symbol and press Enter after the expression to start a block with an increased indent. One or more statements written with the same level of indent will be executed if the Boolean expression evaluates to True .

To end the block, decrease the indentation. Subsequent statements after the block will be executed out of the if condition. The following example demonstrates the if condition.

In the above example, the expression price < 100 evaluates to True , so it will execute the block. The if block starts from the new line after : and all the statements under the if condition starts with an increased indentation, either space or tab. Above, the if block contains only one statement. The following example has multiple statements in the if condition.

Above, the if condition contains multiple statements with the same indentation. If all the statements are not in the same indentation, either space or a tab then it will raise an IdentationError .

The statements with the same indentation level as if condition will not consider in the if block. They will consider out of the if condition.

The following example demonstrates multiple if conditions.

Notice that each if block contains a statement in a different indentation, and that's valid because they are different from each other.

else Condition

Along with the if statement, the else condition can be optionally used to define an alternate block of statements to be executed if the boolean expression in the if condition evaluates to False .

As mentioned before, the indented block starts after the : symbol, after the boolean expression. It will get executed when the condition is True . We have another block that should be executed when the if condition is False . First, complete the if block by a backspace and write else , put add the : symbol in front of the new block to begin it, and add the required statements in the block.

In the above example, the if condition price >= 100 is False , so the else block will be executed. The else block can also contain multiple statements with the same indentation; otherwise, it will raise the IndentationError .

Note that you cannot have multiple else blocks, and it must be the last block.

elif Condition

Use the elif condition is used to include multiple conditional expressions after the if condition or between the if and else conditions.

The elif block is executed if the specified condition evaluates to True .

In the above example, the elif conditions are applied after the if condition. Python will evalute the if condition and if it evaluates to False then it will evalute the elif blocks and execute the elif block whose expression evaluates to True . If multiple elif conditions become True , then the first elif block will be executed.

The following example demonstrates if, elif, and else conditions.

All the if, elif, and else conditions must start from the same indentation level, otherwise it will raise the IndentationError .

Nested if, elif, else Conditions

Python supports nested if, elif, and else condition. The inner condition must be with increased indentation than the outer condition, and all the statements under the one block should be with the same indentation.

  • Compare strings in Python
  • Convert file data to list
  • Convert User Input to a Number
  • Convert String to Datetime in Python
  • How to call external commands in Python?
  • How to count the occurrences of a list item?
  • How to flatten list in Python?
  • How to merge dictionaries in Python?
  • How to pass value by reference in Python?
  • Remove duplicate items from list in Python
  • More Python articles

python multiple conditional assignment

We are a team of passionate developers, educators, and technology enthusiasts who, with their combined expertise and experience, create in -depth, comprehensive, and easy to understand tutorials.We focus on a blend of theoretical explanations and practical examples to encourages hands - on learning. Visit About Us page for more information.

  • Python Questions & Answers
  • Python Skill Test
  • Python Latest Articles

Python's Assignment Operator: Write Robust Assignments

Python's Assignment Operator: Write Robust Assignments

Table of Contents

The Assignment Statement Syntax

The assignment operator, assignments and variables, other assignment syntax, initializing and updating variables, making multiple variables refer to the same object, updating lists through indices and slices, adding and updating dictionary keys, doing parallel assignments, unpacking iterables, providing default argument values, augmented mathematical assignment operators, augmented assignments for concatenation and repetition, augmented bitwise assignment operators, annotated assignment statements, assignment expressions with the walrus operator, managed attribute assignments, define or call a function, work with classes, import modules and objects, use a decorator, access the control variable in a for loop or a comprehension, use the as keyword, access the _ special variable in an interactive session, built-in objects, named constants.

Python’s assignment operators allow you to define assignment statements . This type of statement lets you create, initialize, and update variables throughout your code. Variables are a fundamental cornerstone in every piece of code, and assignment statements give you complete control over variable creation and mutation.

Learning about the Python assignment operator and its use for writing assignment statements will arm you with powerful tools for writing better and more robust Python code.

In this tutorial, you’ll:

  • Use Python’s assignment operator to write assignment statements
  • Take advantage of augmented assignments in Python
  • Explore assignment variants, like assignment expressions and managed attributes
  • Become aware of illegal and dangerous assignments in Python

You’ll dive deep into Python’s assignment statements. To get the most out of this tutorial, you should be comfortable with several basic topics, including variables , built-in data types , comprehensions , functions , and Python keywords . Before diving into some of the later sections, you should also be familiar with intermediate topics, such as object-oriented programming , constants , imports , type hints , properties , descriptors , and decorators .

Free Source Code: Click here to download the free assignment operator source code that you’ll use to write assignment statements that allow you to create, initialize, and update variables in your code.

Assignment Statements and the Assignment Operator

One of the most powerful programming language features is the ability to create, access, and mutate variables . In Python, a variable is a name that refers to a concrete value or object, allowing you to reuse that value or object throughout your code.

To create a new variable or to update the value of an existing one in Python, you’ll use an assignment statement . This statement has the following three components:

  • A left operand, which must be a variable
  • The assignment operator ( = )
  • A right operand, which can be a concrete value , an object , or an expression

Here’s how an assignment statement will generally look in Python:

Here, variable represents a generic Python variable, while expression represents any Python object that you can provide as a concrete value—also known as a literal —or an expression that evaluates to a value.

To execute an assignment statement like the above, Python runs the following steps:

  • Evaluate the right-hand expression to produce a concrete value or object . This value will live at a specific memory address in your computer.
  • Store the object’s memory address in the left-hand variable . This step creates a new variable if the current one doesn’t already exist or updates the value of an existing variable.

The second step shows that variables work differently in Python than in other programming languages. In Python, variables aren’t containers for objects. Python variables point to a value or object through its memory address. They store memory addresses rather than objects.

This behavior difference directly impacts how data moves around in Python, which is always by reference . In most cases, this difference is irrelevant in your day-to-day coding, but it’s still good to know.

The central component of an assignment statement is the assignment operator . This operator is represented by the = symbol, which separates two operands:

  • A value or an expression that evaluates to a concrete value

Operators are special symbols that perform mathematical , logical , and bitwise operations in a programming language. The objects (or object) on which an operator operates are called operands .

Unary operators, like the not Boolean operator, operate on a single object or operand, while binary operators act on two. That means the assignment operator is a binary operator.

Note: Like C , Python uses == for equality comparisons and = for assignments. Unlike C, Python doesn’t allow you to accidentally use the assignment operator ( = ) in an equality comparison.

Equality is a symmetrical relationship, and assignment is not. For example, the expression a == 42 is equivalent to 42 == a . In contrast, the statement a = 42 is correct and legal, while 42 = a isn’t allowed. You’ll learn more about illegal assignments later on.

The right-hand operand in an assignment statement can be any Python object, such as a number , list , string , dictionary , or even a user-defined object. It can also be an expression. In the end, expressions always evaluate to concrete objects, which is their return value.

Here are a few examples of assignments in Python:

The first two sample assignments in this code snippet use concrete values, also known as literals , to create and initialize number and greeting . The third example assigns the result of a math expression to the total variable, while the last example uses a Boolean expression.

Note: You can use the built-in id() function to inspect the memory address stored in a given variable.

Here’s a short example of how this function works:

The number in your output represents the memory address stored in number . Through this address, Python can access the content of number , which is the integer 42 in this example.

If you run this code on your computer, then you’ll get a different memory address because this value varies from execution to execution and computer to computer.

Unlike expressions, assignment statements don’t have a return value because their purpose is to make the association between the variable and its value. That’s why the Python interpreter doesn’t issue any output in the above examples.

Now that you know the basics of how to write an assignment statement, it’s time to tackle why you would want to use one.

The assignment statement is the explicit way for you to associate a name with an object in Python. You can use this statement for two main purposes:

  • Creating and initializing new variables
  • Updating the values of existing variables

When you use a variable name as the left operand in an assignment statement for the first time, you’re creating a new variable. At the same time, you’re initializing the variable to point to the value of the right operand.

On the other hand, when you use an existing variable in a new assignment, you’re updating or mutating the variable’s value. Strictly speaking, every new assignment will make the variable refer to a new value and stop referring to the old one. Python will garbage-collect all the values that are no longer referenced by any existing variable.

Assignment statements not only assign a value to a variable but also determine the data type of the variable at hand. This additional behavior is another important detail to consider in this kind of statement.

Because Python is a dynamically typed language, successive assignments to a given variable can change the variable’s data type. Changing the data type of a variable during a program’s execution is considered bad practice and highly discouraged. It can lead to subtle bugs that can be difficult to track down.

Unlike in math equations, in Python assignments, the left operand must be a variable rather than an expression or a value. For example, the following construct is illegal, and Python flags it as invalid syntax:

In this example, you have expressions on both sides of the = sign, and this isn’t allowed in Python code. The error message suggests that you may be confusing the equality operator with the assignment one, but that’s not the case. You’re really running an invalid assignment.

To correct this construct and convert it into a valid assignment, you’ll have to do something like the following:

In this code snippet, you first import the sqrt() function from the math module. Then you isolate the hypotenuse variable in the original equation by using the sqrt() function. Now your code works correctly.

Now you know what kind of syntax is invalid. But don’t get the idea that assignment statements are rigid and inflexible. In fact, they offer lots of room for customization, as you’ll learn next.

Python’s assignment statements are pretty flexible and versatile. You can write them in several ways, depending on your specific needs and preferences. Here’s a quick summary of the main ways to write assignments in Python:

Up to this point, you’ve mostly learned about the base assignment syntax in the above code snippet. In the following sections, you’ll learn about multiple, parallel, and augmented assignments. You’ll also learn about assignments with iterable unpacking.

Read on to see the assignment statements in action!

Assignment Statements in Action

You’ll find and use assignment statements everywhere in your Python code. They’re a fundamental part of the language, providing an explicit way to create, initialize, and mutate variables.

You can use assignment statements with plain names, like number or counter . You can also use assignments in more complicated scenarios, such as with:

  • Qualified attribute names , like user.name
  • Indices and slices of mutable sequences, like a_list[i] and a_list[i:j]
  • Dictionary keys , like a_dict[key]

This list isn’t exhaustive. However, it gives you some idea of how flexible these statements are. You can even assign multiple values to an equal number of variables in a single line, commonly known as parallel assignment . Additionally, you can simultaneously assign the values in an iterable to a comma-separated group of variables in what’s known as an iterable unpacking operation.

In the following sections, you’ll dive deeper into all these topics and a few other exciting things that you can do with assignment statements in Python.

The most elementary use case of an assignment statement is to create a new variable and initialize it using a particular value or expression:

All these statements create new variables, assigning them initial values or expressions. For an initial value, you should always use the most sensible and least surprising value that you can think of. For example, initializing a counter to something different from 0 may be confusing and unexpected because counters almost always start having counted no objects.

Updating a variable’s current value or state is another common use case of assignment statements. In Python, assigning a new value to an existing variable doesn’t modify the variable’s current value. Instead, it causes the variable to refer to a different value. The previous value will be garbage-collected if no other variable refers to it.

Consider the following examples:

These examples run two consecutive assignments on the same variable. The first one assigns the string "Hello, World!" to a new variable named greeting .

The second assignment updates the value of greeting by reassigning it the "Hi, Pythonistas!" string. In this example, the original value of greeting —the "Hello, World!" string— is lost and garbage-collected. From this point on, you can’t access the old "Hello, World!" string.

Even though running multiple assignments on the same variable during a program’s execution is common practice, you should use this feature with caution. Changing the value of a variable can make your code difficult to read, understand, and debug. To comprehend the code fully, you’ll have to remember all the places where the variable was changed and the sequential order of those changes.

Because assignments also define the data type of their target variables, it’s also possible for your code to accidentally change the type of a given variable at runtime. A change like this can lead to breaking errors, like AttributeError exceptions. Remember that strings don’t have the same methods and attributes as lists or dictionaries, for example.

In Python, you can make several variables reference the same object in a multiple-assignment line. This can be useful when you want to initialize several similar variables using the same initial value:

In this example, you chain two assignment operators in a single line. This way, your two variables refer to the same initial value of 0 . Note how both variables hold the same memory address, so they point to the same instance of 0 .

When it comes to integer variables, Python exhibits a curious behavior. It provides a numeric interval where multiple assignments behave the same as independent assignments. Consider the following examples:

To create n and m , you use independent assignments. Therefore, they should point to different instances of the number 42 . However, both variables hold the same object, which you confirm by comparing their corresponding memory addresses.

Now check what happens when you use a greater initial value:

Now n and m hold different memory addresses, which means they point to different instances of the integer number 300 . In contrast, when you use multiple assignments, both variables refer to the same object. This tiny difference can save you small bits of memory if you frequently initialize integer variables in your code.

The implicit behavior of making independent assignments point to the same integer number is actually an optimization called interning . It consists of globally caching the most commonly used integer values in day-to-day programming.

Under the hood, Python defines a numeric interval in which interning takes place. That’s the interning interval for integer numbers. You can determine this interval using a small script like the following:

This script helps you determine the interning interval by comparing integer numbers from -10 to 500 . If you run the script from your command line, then you’ll get an output like the following:

This output means that if you use a single number between -5 and 256 to initialize several variables in independent statements, then all these variables will point to the same object, which will help you save small bits of memory in your code.

In contrast, if you use a number that falls outside of the interning interval, then your variables will point to different objects instead. Each of these objects will occupy a different memory spot.

You can use the assignment operator to mutate the value stored at a given index in a Python list. The operator also works with list slices . The syntax to write these types of assignment statements is the following:

In the first construct, expression can return any Python object, including another list. In the second construct, expression must return a series of values as a list, tuple, or any other sequence. You’ll get a TypeError if expression returns a single value.

Note: When creating slice objects, you can use up to three arguments. These arguments are start , stop , and step . They define the number that starts the slice, the number at which the slicing must stop retrieving values, and the step between values.

Here’s an example of updating an individual value in a list:

In this example, you update the value at index 2 using an assignment statement. The original number at that index was 7 , and after the assignment, the number is 3 .

Note: Using indices and the assignment operator to update a value in a tuple or a character in a string isn’t possible because tuples and strings are immutable data types in Python.

Their immutability means that you can’t change their items in place :

You can’t use the assignment operator to change individual items in tuples or strings. These data types are immutable and don’t support item assignments.

It’s important to note that you can’t add new values to a list by using indices that don’t exist in the target list:

In this example, you try to add a new value to the end of numbers by using an index that doesn’t exist. This assignment isn’t allowed because there’s no way to guarantee that new indices will be consecutive. If you ever want to add a single value to the end of a list, then use the .append() method.

If you want to update several consecutive values in a list, then you can use slicing and an assignment statement:

In the first example, you update the letters between indices 1 and 3 without including the letter at 3 . The second example updates the letters from index 3 until the end of the list. Note that this slicing appends a new value to the list because the target slice is shorter than the assigned values.

Also note that the new values were provided through a tuple, which means that this type of assignment allows you to use other types of sequences to update your target list.

The third example updates a single value using a slice where both indices are equal. In this example, the assignment inserts a new item into your target list.

In the final example, you use a step of 2 to replace alternating letters with their lowercase counterparts. This slicing starts at index 1 and runs through the whole list, stepping by two items each time.

Updating the value of an existing key or adding new key-value pairs to a dictionary is another common use case of assignment statements. To do these operations, you can use the following syntax:

The first construct helps you update the current value of an existing key, while the second construct allows you to add a new key-value pair to the dictionary.

For example, to update an existing key, you can do something like this:

In this example, you update the current inventory of oranges in your store using an assignment. The left operand is the existing dictionary key, and the right operand is the desired new value.

While you can’t add new values to a list by assignment, dictionaries do allow you to add new key-value pairs using the assignment operator. In the example below, you add a lemon key to inventory :

In this example, you successfully add a new key-value pair to your inventory with 100 units. This addition is possible because dictionaries don’t have consecutive indices but unique keys, which are safe to add by assignment.

The assignment statement does more than assign the result of a single expression to a single variable. It can also cope nicely with assigning multiple values to multiple variables simultaneously in what’s known as a parallel assignment .

Here’s the general syntax for parallel assignments in Python:

Note that the left side of the statement can be either a tuple or a list of variables. Remember that to create a tuple, you just need a series of comma-separated elements. In this case, these elements must be variables.

The right side of the statement must be a sequence or iterable of values or expressions. In any case, the number of elements in the right operand must match the number of variables on the left. Otherwise, you’ll get a ValueError exception.

In the following example, you compute the two solutions of a quadratic equation using a parallel assignment:

In this example, you first import sqrt() from the math module. Then you initialize the equation’s coefficients in a parallel assignment.

The equation’s solution is computed in another parallel assignment. The left operand contains a tuple of two variables, x1 and x2 . The right operand consists of a tuple of expressions that compute the solutions for the equation. Note how each result is assigned to each variable by position.

A classical use case of parallel assignment is to swap values between variables:

The highlighted line does the magic and swaps the values of previous_value and next_value at the same time. Note that in a programming language that doesn’t support this kind of assignment, you’d have to use a temporary variable to produce the same effect:

In this example, instead of using parallel assignment to swap values between variables, you use a new variable to temporarily store the value of previous_value to avoid losing its reference.

For a concrete example of when you’d need to swap values between variables, say you’re learning how to implement the bubble sort algorithm , and you come up with the following function:

In the highlighted line, you use a parallel assignment to swap values in place if the current value is less than the next value in the input list. To dive deeper into the bubble sort algorithm and into sorting algorithms in general, check out Sorting Algorithms in Python .

You can use assignment statements for iterable unpacking in Python. Unpacking an iterable means assigning its values to a series of variables one by one. The iterable must be the right operand in the assignment, while the variables must be the left operand.

Like in parallel assignments, the variables must come as a tuple or list. The number of variables must match the number of values in the iterable. Alternatively, you can use the unpacking operator ( * ) to grab several values in a variable if the number of variables doesn’t match the iterable length.

Here’s the general syntax for iterable unpacking in Python:

Iterable unpacking is a powerful feature that you can use all around your code. It can help you write more readable and concise code. For example, you may find yourself doing something like this:

Whenever you do something like this in your code, go ahead and replace it with a more readable iterable unpacking using a single and elegant assignment, like in the following code snippet:

The numbers list on the right side contains four values. The assignment operator unpacks these values into the four variables on the left side of the statement. The values in numbers get assigned to variables in the same order that they appear in the iterable. The assignment is done by position.

Note: Because Python sets are also iterables, you can use them in an iterable unpacking operation. However, it won’t be clear which value goes to which variable because sets are unordered data structures.

The above example shows the most common form of iterable unpacking in Python. The main condition for the example to work is that the number of variables matches the number of values in the iterable.

What if you don’t know the iterable length upfront? Will the unpacking work? It’ll work if you use the * operator to pack several values into one of your target variables.

For example, say that you want to unpack the first and second values in numbers into two different variables. Additionally, you would like to pack the rest of the values in a single variable conveniently called rest . In this case, you can use the unpacking operator like in the following code:

In this example, first and second hold the first and second values in numbers , respectively. These values are assigned by position. The * operator packs all the remaining values in the input iterable into rest .

The unpacking operator ( * ) can appear at any position in your series of target variables. However, you can only use one instance of the operator:

The iterable unpacking operator works in any position in your list of variables. Note that you can only use one unpacking operator per assignment. Using more than one unpacking operator isn’t allowed and raises a SyntaxError .

Dropping away unwanted values from the iterable is a common use case for the iterable unpacking operator. Consider the following example:

In Python, if you want to signal that a variable won’t be used, then you use an underscore ( _ ) as the variable’s name. In this example, useful holds the only value that you need to use from the input iterable. The _ variable is a placeholder that guarantees that the unpacking works correctly. You won’t use the values that end up in this disposable variable.

Note: In the example above, if your target iterable is a sequence data type, such as a list or tuple, then it’s best to access its last item directly.

To do this, you can use the -1 index:

Using -1 gives you access to the last item of any sequence data type. In contrast, if you’re dealing with iterators , then you won’t be able to use indices. That’s when the *_ syntax comes to your rescue.

The pattern used in the above example comes in handy when you have a function that returns multiple values, and you only need a few of these values in your code. The os.walk() function may provide a good example of this situation.

This function allows you to iterate over the content of a directory recursively. The function returns a generator object that yields three-item tuples. Each tuple contains the following items:

  • The path to the current directory as a string
  • The names of all the immediate subdirectories as a list of strings
  • The names of all the files in the current directory as a list of strings

Now say that you want to iterate over your home directory and list only the files. You can do something like this:

This code will issue a long output depending on the current content of your home directory. Note that you need to provide a string with the path to your user folder for the example to work. The _ placeholder variable will hold the unwanted data.

In contrast, the filenames variable will hold the list of files in the current directory, which is the data that you need. The code will print the list of filenames. Go ahead and give it a try!

The assignment operator also comes in handy when you need to provide default argument values in your functions and methods. Default argument values allow you to define functions that take arguments with sensible defaults. These defaults allow you to call the function with specific values or to simply rely on the defaults.

As an example, consider the following function:

This function takes one argument, called name . This argument has a sensible default value that’ll be used when you call the function without arguments. To provide this sensible default value, you use an assignment.

Note: According to PEP 8 , the style guide for Python code, you shouldn’t use spaces around the assignment operator when providing default argument values in function definitions.

Here’s how the function works:

If you don’t provide a name during the call to greet() , then the function uses the default value provided in the definition. If you provide a name, then the function uses it instead of the default one.

Up to this point, you’ve learned a lot about the Python assignment operator and how to use it for writing different types of assignment statements. In the following sections, you’ll dive into a great feature of assignment statements in Python. You’ll learn about augmented assignments .

Augmented Assignment Operators in Python

Python supports what are known as augmented assignments . An augmented assignment combines the assignment operator with another operator to make the statement more concise. Most Python math and bitwise operators have an augmented assignment variation that looks something like this:

Note that $ isn’t a valid Python operator. In this example, it’s a placeholder for a generic operator. This statement works as follows:

  • Evaluate expression to produce a value.
  • Run the operation defined by the operator that prefixes the = sign, using the previous value of variable and the return value of expression as operands.
  • Assign the resulting value back to variable .

In practice, an augmented assignment like the above is equivalent to the following statement:

As you can conclude, augmented assignments are syntactic sugar . They provide a shorthand notation for a specific and popular kind of assignment.

For example, say that you need to define a counter variable to count some stuff in your code. You can use the += operator to increment counter by 1 using the following code:

In this example, the += operator, known as augmented addition , adds 1 to the previous value in counter each time you run the statement counter += 1 .

It’s important to note that unlike regular assignments, augmented assignments don’t create new variables. They only allow you to update existing variables. If you use an augmented assignment with an undefined variable, then you get a NameError :

Python evaluates the right side of the statement before assigning the resulting value back to the target variable. In this specific example, when Python tries to compute x + 1 , it finds that x isn’t defined.

Great! You now know that an augmented assignment consists of combining the assignment operator with another operator, like a math or bitwise operator. To continue this discussion, you’ll learn which math operators have an augmented variation in Python.

An equation like x = x + b doesn’t make sense in math. But in programming, a statement like x = x + b is perfectly valid and can be extremely useful. It adds b to x and reassigns the result back to x .

As you already learned, Python provides an operator to shorten x = x + b . Yes, the += operator allows you to write x += b instead. Python also offers augmented assignment operators for most math operators. Here’s a summary:

Operator Description Example Equivalent
Adds the right operand to the left operand and stores the result in the left operand
Subtracts the right operand from the left operand and stores the result in the left operand
Multiplies the right operand with the left operand and stores the result in the left operand
Divides the left operand by the right operand and stores the result in the left operand
Performs of the left operand by the right operand and stores the result in the left operand
Finds the remainder of dividing the left operand by the right operand and stores the result in the left operand
Raises the left operand to the power of the right operand and stores the result in the left operand

The Example column provides generic examples of how to use the operators in actual code. Note that x must be previously defined for the operators to work correctly. On the other hand, y can be either a concrete value or an expression that returns a value.

Note: The matrix multiplication operator ( @ ) doesn’t support augmented assignments yet.

Consider the following example of matrix multiplication using NumPy arrays:

Note that the exception traceback indicates that the operation isn’t supported yet.

To illustrate how augmented assignment operators work, say that you need to create a function that takes an iterable of numeric values and returns their sum. You can write this function like in the code below:

In this function, you first initialize total to 0 . In each iteration, the loop adds a new number to total using the augmented addition operator ( += ). When the loop terminates, total holds the sum of all the input numbers. Variables like total are known as accumulators . The += operator is typically used to update accumulators.

Note: Computing the sum of a series of numeric values is a common operation in programming. Python provides the built-in sum() function for this specific computation.

Another interesting example of using an augmented assignment is when you need to implement a countdown while loop to reverse an iterable. In this case, you can use the -= operator:

In this example, custom_reversed() is a generator function because it uses yield . Calling the function creates an iterator that yields items from the input iterable in reverse order. To decrement the control variable, index , you use an augmented subtraction statement that subtracts 1 from the variable in every iteration.

Note: Similar to summing the values in an iterable, reversing an iterable is also a common requirement. Python provides the built-in reversed() function for this specific computation, so you don’t have to implement your own. The above example only intends to show the -= operator in action.

Finally, counters are a special type of accumulators that allow you to count objects. Here’s an example of a letter counter:

To create this counter, you use a Python dictionary. The keys store the letters. The values store the counts. Again, to increment the counter, you use an augmented addition.

Counters are so common in programming that Python provides a tool specially designed to facilitate the task of counting. Check out Python’s Counter: The Pythonic Way to Count Objects for a complete guide on how to use this tool.

The += and *= augmented assignment operators also work with sequences , such as lists, tuples, and strings. The += operator performs augmented concatenations , while the *= operator performs augmented repetition .

These operators behave differently with mutable and immutable data types:

Operator Description Example
Runs an augmented concatenation operation on the target sequence. Mutable sequences are updated in place. If the sequence is immutable, then a new sequence is created and assigned back to the target name.
Adds to itself times. Mutable sequences are updated in place. If the sequence is immutable, then a new sequence is created and assigned back to the target name.

Note that the augmented concatenation operator operates on two sequences, while the augmented repetition operator works on a sequence and an integer number.

Consider the following examples and pay attention to the result of calling the id() function:

Mutable sequences like lists support the += augmented assignment operator through the .__iadd__() method, which performs an in-place addition. This method mutates the underlying list, appending new values to its end.

Note: If the left operand is mutable, then x += y may not be completely equivalent to x = x + y . For example, if you do list_1 = list_1 + list_2 instead of list_1 += list_2 above, then you’ll create a new list instead of mutating the existing one. This may be important if other variables refer to the same list.

Immutable sequences, such as tuples and strings, don’t provide an .__iadd__() method. Therefore, augmented concatenations fall back to the .__add__() method, which doesn’t modify the sequence in place but returns a new sequence.

There’s another difference between mutable and immutable sequences when you use them in an augmented concatenation. Consider the following examples:

With mutable sequences, the data to be concatenated can come as a list, tuple, string, or any other iterable. In contrast, with immutable sequences, the data can only come as objects of the same type. You can concatenate tuples to tuples and strings to strings, for example.

Again, the augmented repetition operator works with a sequence on the left side of the operator and an integer on the right side. This integer value represents the number of repetitions to get in the resulting sequence:

When the *= operator operates on a mutable sequence, it falls back to the .__imul__() method, which performs the operation in place, modifying the underlying sequence. In contrast, if *= operates on an immutable sequence, then .__mul__() is called, returning a new sequence of the same type.

Note: Values of n less than 0 are treated as 0 , which returns an empty sequence of the same data type as the target sequence on the left side of the *= operand.

Note that a_list[0] is a_list[3] returns True . This is because the *= operator doesn’t make a copy of the repeated data. It only reflects the data. This behavior can be a source of issues when you use the operator with mutable values.

For example, say that you want to create a list of lists to represent a matrix, and you need to initialize the list with n empty lists, like in the following code:

In this example, you use the *= operator to populate matrix with three empty lists. Now check out what happens when you try to populate the first sublist in matrix :

The appended values are reflected in the three sublists. This happens because the *= operator doesn’t make copies of the data that you want to repeat. It only reflects the data. Therefore, every sublist in matrix points to the same object and memory address.

If you ever need to initialize a list with a bunch of empty sublists, then use a list comprehension :

This time, when you populate the first sublist of matrix , your changes aren’t propagated to the other sublists. This is because all the sublists are different objects that live in different memory addresses.

Bitwise operators also have their augmented versions. The logic behind them is similar to that of the math operators. The following table summarizes the augmented bitwise operators that Python provides:

Operator Operation Example Equivalent
Augmented bitwise AND ( )
Augmented bitwise OR ( )
Augmented bitwise XOR ( )
Augmented bitwise right shift
Augmented bitwise left shift

The augmented bitwise assignment operators perform the intended operation by taking the current value of the left operand as a starting point for the computation. Consider the following example, which uses the & and &= operators:

Programmers who work with high-level languages like Python rarely use bitwise operations in day-to-day coding. However, these types of operations can be useful in some situations.

For example, say that you’re implementing a Unix-style permission system for your users to access a given resource. In this case, you can use the characters "r" for reading, "w" for writing, and "x" for execution permissions, respectively. However, using bit-based permissions could be more memory efficient:

You can assign permissions to your users with the OR bitwise operator or the augmented OR bitwise operator. Finally, you can use the bitwise AND operator to check if a user has a certain permission, as you did in the final two examples.

You’ve learned a lot about augmented assignment operators and statements in this and the previous sections. These operators apply to math, concatenation, repetition, and bitwise operations. Now you’re ready to look at other assignment variants that you can use in your code or find in other developers’ code.

Other Assignment Variants

So far, you’ve learned that Python’s assignment statements and the assignment operator are present in many different scenarios and use cases. Those use cases include variable creation and initialization, parallel assignments, iterable unpacking, augmented assignments, and more.

In the following sections, you’ll learn about a few variants of assignment statements that can be useful in your future coding. You can also find these assignment variants in other developers’ code. So, you should be aware of them and know how they work in practice.

In short, you’ll learn about:

  • Annotated assignment statements with type hints
  • Assignment expressions with the walrus operator
  • Managed attribute assignments with properties and descriptors
  • Implicit assignments in Python

These topics will take you through several interesting and useful examples that showcase the power of Python’s assignment statements.

PEP 526 introduced a dedicated syntax for variable annotation back in Python 3.6 . The syntax consists of the variable name followed by a colon ( : ) and the variable type:

Even though these statements declare three variables with their corresponding data types, the variables aren’t actually created or initialized. So, for example, you can’t use any of these variables in an augmented assignment statement:

If you try to use one of the previously declared variables in an augmented assignment, then you get a NameError because the annotation syntax doesn’t define the variable. To actually define it, you need to use an assignment.

The good news is that you can use the variable annotation syntax in an assignment statement with the = operator:

The first statement in this example is what you can call an annotated assignment statement in Python. You may ask yourself why you should use type annotations in this type of assignment if everybody can see that counter holds an integer number. You’re right. In this example, the variable type is unambiguous.

However, imagine what would happen if you found a variable initialization like the following:

What would be the data type of each user in users ? If the initialization of users is far away from the definition of the User class, then there’s no quick way to answer this question. To clarify this ambiguity, you can provide the appropriate type hint for users :

Now you’re clearly communicating that users will hold a list of User instances. Using type hints in assignment statements that initialize variables to empty collection data types—such as lists, tuples, or dictionaries—allows you to provide more context about how your code works. This practice will make your code more explicit and less error-prone.

Up to this point, you’ve learned that regular assignment statements with the = operator don’t have a return value. They just create or update variables. Therefore, you can’t use a regular assignment to assign a value to a variable within the context of an expression.

Python 3.8 changed this by introducing a new type of assignment statement through PEP 572 . This new statement is known as an assignment expression or named expression .

Note: Expressions are a special type of statement in Python. Their distinguishing characteristic is that expressions always have a return value, which isn’t the case with all types of statements.

Unlike regular assignments, assignment expressions have a return value, which is why they’re called expressions in the first place. This return value is automatically assigned to a variable. To write an assignment expression, you must use the walrus operator ( := ), which was named for its resemblance to the eyes and tusks of a walrus lying on its side.

The general syntax of an assignment statement is as follows:

This expression looks like a regular assignment. However, instead of using the assignment operator ( = ), it uses the walrus operator ( := ). For the expression to work correctly, the enclosing parentheses are required in most use cases. However, there are certain situations in which these parentheses are superfluous. Either way, they won’t hurt you.

Assignment expressions come in handy when you want to reuse the result of an expression or part of an expression without using a dedicated assignment to grab this value beforehand.

Note: Assignment expressions with the walrus operator have several practical use cases. They also have a few restrictions. For example, they’re illegal in certain contexts, such as lambda functions, parallel assignments, and augmented assignments.

For a deep dive into this special type of assignment, check out The Walrus Operator: Python 3.8 Assignment Expressions .

A particularly handy use case for assignment expressions is when you need to grab the result of an expression used in the context of a conditional statement. For example, say that you need to write a function to compute the mean of a sample of numeric values. Without the walrus operator, you could do something like this:

In this example, the sample size ( n ) is a value that you need to reuse in two different computations. First, you need to check whether the sample has data points or not. Then you need to use the sample size to compute the mean. To be able to reuse n , you wrote a dedicated assignment statement at the beginning of your function to grab the sample size.

You can avoid this extra step by combining it with the first use of the target value, len(sample) , using an assignment expression like the following:

The assignment expression introduced in the conditional computes the sample size and assigns it to n . This way, you guarantee that you have a reference to the sample size to use in further computations.

Because the assignment expression returns the sample size anyway, the conditional can check whether that size equals 0 or not and then take a certain course of action depending on the result of this check. The return statement computes the sample’s mean and sends the result back to the function caller.

Python provides a few tools that allow you to fine-tune the operations behind the assignment of attributes. The attributes that run implicit operations on assignments are commonly referred to as managed attributes .

Properties are the most commonly used tool for providing managed attributes in your classes. However, you can also use descriptors and, in some cases, the .__setitem__() special method.

To understand what fine-tuning the operation behind an assignment means, say that you need a Point class that only allows numeric values for its coordinates, x and y . To write this class, you must set up a validation mechanism to reject non-numeric values. You can use properties to attach the validation functionality on top of x and y .

Here’s how you can write your class:

In Point , you use properties for the .x and .y coordinates. Each property has a getter and a setter method . The getter method returns the attribute at hand. The setter method runs the input validation using a try … except block and the built-in float() function. Then the method assigns the result to the actual attribute.

Here’s how your class works in practice:

When you use a property-based attribute as the left operand in an assignment statement, Python automatically calls the property’s setter method, running any computation from it.

Because both .x and .y are properties, the input validation runs whenever you assign a value to either attribute. In the first example, the input values are valid numbers and the validation passes. In the final example, "one" isn’t a valid numeric value, so the validation fails.

If you look at your Point class, you’ll note that it follows a repetitive pattern, with the getter and setter methods looking quite similar. To avoid this repetition, you can use a descriptor instead of a property.

A descriptor is a class that implements the descriptor protocol , which consists of four special methods :

  • .__get__() runs when you access the attribute represented by the descriptor.
  • .__set__() runs when you use the attribute in an assignment statement.
  • .__delete__() runs when you use the attribute in a del statement.
  • .__set_name__() sets the attribute’s name, creating a name-aware attribute.

Here’s how your code may look if you use a descriptor to represent the coordinates of your Point class:

You’ve removed repetitive code by defining Coordinate as a descriptor that manages the input validation in a single place. Go ahead and run the following code to try out the new implementation of Point :

Great! The class works as expected. Thanks to the Coordinate descriptor, you now have a more concise and non-repetitive version of your original code.

Another way to fine-tune the operations behind an assignment statement is to provide a custom implementation of .__setitem__() in your class. You’ll use this method in classes representing mutable data collections, such as custom list-like or dictionary-like classes.

As an example, say that you need to create a dictionary-like class that stores its keys in lowercase letters:

In this example, you create a dictionary-like class by subclassing UserDict from collections . Your class implements a .__setitem__() method, which takes key and value as arguments. The method uses str.lower() to convert key into lowercase letters before storing it in the underlying dictionary.

Python implicitly calls .__setitem__() every time you use a key as the left operand in an assignment statement. This behavior allows you to tweak how you process the assignment of keys in your custom dictionary.

Implicit Assignments in Python

Python implicitly runs assignments in many different contexts. In most cases, these implicit assignments are part of the language syntax. In other cases, they support specific behaviors.

Whenever you complete an action in the following list, Python runs an implicit assignment for you:

  • Define or call a function
  • Define or instantiate a class
  • Use the current instance , self
  • Import modules and objects
  • Use a decorator
  • Use the control variable in a for loop or a comprehension
  • Use the as qualifier in with statements , imports, and try … except blocks
  • Access the _ special variable in an interactive session

Behind the scenes, Python performs an assignment in every one of the above situations. In the following subsections, you’ll take a tour of all these situations.

When you define a function, the def keyword implicitly assigns a function object to your function’s name. Here’s an example:

From this point on, the name greet refers to a function object that lives at a given memory address in your computer. You can call the function using its name and a pair of parentheses with appropriate arguments. This way, you can reuse greet() wherever you need it.

If you call your greet() function with fellow as an argument, then Python implicitly assigns the input argument value to the name parameter on the function’s definition. The parameter will hold a reference to the input arguments.

When you define a class with the class keyword, you’re assigning a specific name to a class object . You can later use this name to create instances of that class. Consider the following example:

In this example, the name User holds a reference to a class object, which was defined in __main__.User . Like with a function, when you call the class’s constructor with the appropriate arguments to create an instance, Python assigns the arguments to the parameters defined in the class initializer .

Another example of implicit assignments is the current instance of a class, which in Python is called self by convention. This name implicitly gets a reference to the current object whenever you instantiate a class. Thanks to this implicit assignment, you can access .name and .job from within the class without getting a NameError in your code.

Import statements are another variant of implicit assignments in Python. Through an import statement, you assign a name to a module object, class, function, or any other imported object. This name is then created in your current namespace so that you can access it later in your code:

In this example, you import the sys module object from the standard library and assign it to the sys name, which is now available in your namespace, as you can conclude from the second call to the built-in dir() function.

You also run an implicit assignment when you use a decorator in your code. The decorator syntax is just a shortcut for a formal assignment like the following:

Here, you call decorator() with a function object as an argument. This call will typically add functionality on top of the existing function, func() , and return a function object, which is then reassigned to the func name.

The decorator syntax is syntactic sugar for replacing the previous assignment, which you can now write as follows:

Even though this new code looks pretty different from the above assignment, the code implicitly runs the same steps.

Another situation in which Python automatically runs an implicit assignment is when you use a for loop or a comprehension. In both cases, you can have one or more control variables that you then use in the loop or comprehension body:

The memory address of control_variable changes on each iteration of the loop. This is because Python internally reassigns a new value from the loop iterable to the loop control variable on each cycle.

The same behavior appears in comprehensions:

In the end, comprehensions work like for loops but use a more concise syntax. This comprehension creates a new list of strings that mimic the output from the previous example.

The as keyword in with statements, except clauses, and import statements is another example of an implicit assignment in Python. This time, the assignment isn’t completely implicit because the as keyword provides an explicit way to define the target variable.

In a with statement, the target variable that follows the as keyword will hold a reference to the context manager that you’re working with. As an example, say that you have a hello.txt file with the following content:

You want to open this file and print each of its lines on your screen. In this case, you can use the with statement to open the file using the built-in open() function.

In the example below, you accomplish this. You also add some calls to print() that display information about the target variable defined by the as keyword:

This with statement uses the open() function to open hello.txt . The open() function is a context manager that returns a text file object represented by an io.TextIOWrapper instance.

Since you’ve defined a hello target variable with the as keyword, now that variable holds a reference to the file object itself. You confirm this by printing the object and its memory address. Finally, the for loop iterates over the lines and prints this content to the screen.

When it comes to using the as keyword in the context of an except clause, the target variable will contain an exception object if any exception occurs:

In this example, you run a division that raises a ZeroDivisionError . The as keyword assigns the raised exception to error . Note that when you print the exception object, you get only the message because exceptions have a custom .__str__() method that supports this behavior.

There’s a final detail to remember when using the as specifier in a try … except block like the one in the above example. Once you leave the except block, the target variable goes out of scope , and you can’t use it anymore.

Finally, Python’s import statements also support the as keyword. In this context, you can use as to import objects with a different name:

In these examples, you use the as keyword to import the numpy package with the np name and pandas with the name pd . If you call dir() , then you’ll realize that np and pd are now in your namespace. However, the numpy and pandas names are not.

Using the as keyword in your imports comes in handy when you want to use shorter names for your objects or when you need to use different objects that originally had the same name in your code. It’s also useful when you want to make your imported names non-public using a leading underscore, like in import sys as _sys .

The final implicit assignment that you’ll learn about in this tutorial only occurs when you’re using Python in an interactive session. Every time you run a statement that returns a value, the interpreter stores the result in a special variable denoted by a single underscore character ( _ ).

You can access this special variable as you’d access any other variable:

These examples cover several situations in which Python internally uses the _ variable. The first two examples evaluate expressions. Expressions always have a return value, which is automatically assigned to the _ variable every time.

When it comes to function calls, note that if your function returns a fruitful value, then _ will hold it. In contrast, if your function returns None , then the _ variable will remain untouched.

The next example consists of a regular assignment statement. As you already know, regular assignments don’t return any value, so the _ variable isn’t updated after these statements run. Finally, note that accessing a variable in an interactive session returns the value stored in the target variable. This value is then assigned to the _ variable.

Note that since _ is a regular variable, you can use it in other expressions:

In this example, you first create a list of values. Then you call len() to get the number of values in the list. Python automatically stores this value in the _ variable. Finally, you use _ to compute the mean of your list of values.

Now that you’ve learned about some of the implicit assignments that Python runs under the hood, it’s time to dig into a final assignment-related topic. In the following few sections, you’ll learn about some illegal and dangerous assignments that you should be aware of and avoid in your code.

Illegal and Dangerous Assignments in Python

In Python, you’ll find a few situations in which using assignments is either forbidden or dangerous. You must be aware of these special situations and try to avoid them in your code.

In the following sections, you’ll learn when using assignment statements isn’t allowed in Python. You’ll also learn about some situations in which using assignments should be avoided if you want to keep your code consistent and robust.

You can’t use Python keywords as variable names in assignment statements. This kind of assignment is explicitly forbidden. If you try to use a keyword as a variable name in an assignment, then you get a SyntaxError :

Whenever you try to use a keyword as the left operand in an assignment statement, you get a SyntaxError . Keywords are an intrinsic part of the language and can’t be overridden.

If you ever feel the need to name one of your variables using a Python keyword, then you can append an underscore to the name of your variable:

In this example, you’re using the desired name for your variables. Because you added a final underscore to the names, Python doesn’t recognize them as keywords, so it doesn’t raise an error.

Note: Even though adding an underscore at the end of a name is an officially recommended practice , it can be confusing sometimes. Therefore, try to find an alternative name or use a synonym whenever you find yourself using this convention.

For example, you can write something like this:

In this example, using the name booking_class for your variable is way clearer and more descriptive than using class_ .

You’ll also find that you can use only a few keywords as part of the right operand in an assignment statement. Those keywords will generally define simple statements that return a value or object. These include lambda , and , or , not , True , False , None , in , and is . You can also use the for keyword when it’s part of a comprehension and the if keyword when it’s used as part of a ternary operator .

In an assignment, you can never use a compound statement as the right operand. Compound statements are those that require an indented block, such as for and while loops, conditionals, with statements, try … except blocks, and class or function definitions.

Sometimes, you need to name variables, but the desired or ideal name is already taken and used as a built-in name. If this is your case, think harder and find another name. Don’t shadow the built-in.

Shadowing built-in names can cause hard-to-identify problems in your code. A common example of this issue is using list or dict to name user-defined variables. In this case, you override the corresponding built-in names, which won’t work as expected if you use them later in your code.

Consider the following example:

The exception in this example may sound surprising. How come you can’t use list() to build a list from a call to map() that returns a generator of square numbers?

By using the name list to identify your list of numbers, you shadowed the built-in list name. Now that name points to a list object rather than the built-in class. List objects aren’t callable, so your code no longer works.

In Python, you’ll have nothing that warns against using built-in, standard-library, or even relevant third-party names to identify your own variables. Therefore, you should keep an eye out for this practice. It can be a source of hard-to-debug errors.

In programming, a constant refers to a name associated with a value that never changes during a program’s execution. Unlike other programming languages, Python doesn’t have a dedicated syntax for defining constants. This fact implies that Python doesn’t have constants in the strict sense of the word.

Python only has variables. If you need a constant in Python, then you’ll have to define a variable and guarantee that it won’t change during your code’s execution. To do that, you must avoid using that variable as the left operand in an assignment statement.

To tell other Python programmers that a given variable should be treated as a constant, you must write your variable’s name in capital letters with underscores separating the words. This naming convention has been adopted by the Python community and is a recommendation that you’ll find in the Constants section of PEP 8 .

In the following examples, you define some constants in Python:

The problem with these constants is that they’re actually variables. Nothing prevents you from changing their value during your code’s execution. So, at any time, you can do something like the following:

These assignments modify the value of two of your original constants. Python doesn’t complain about these changes, which can cause issues later in your code. As a Python developer, you must guarantee that named constants in your code remain constant.

The only way to do that is never to use named constants in an assignment statement other than the constant definition.

You’ve learned a lot about Python’s assignment operators and how to use them for writing assignment statements . With this type of statement, you can create, initialize, and update variables according to your needs. Now you have the required skills to fully manage the creation and mutation of variables in your Python code.

In this tutorial, you’ve learned how to:

  • Write assignment statements using Python’s assignment operators
  • Work with augmented assignments in Python
  • Explore assignment variants, like assignment expression and managed attributes
  • Identify illegal and dangerous assignments in Python

Learning about the Python assignment operator and how to use it in assignment statements is a fundamental skill in Python. It empowers you to write reliable and effective Python code.

🐍 Python Tricks 💌

Get a short & sweet Python Trick delivered to your inbox every couple of days. No spam ever. Unsubscribe any time. Curated by the Real Python team.

Python Tricks Dictionary Merge

About Leodanis Pozo Ramos

Leodanis Pozo Ramos

Leodanis is an industrial engineer who loves Python and software development. He's a self-taught Python developer with 6+ years of experience. He's an avid technical writer with a growing number of articles published on Real Python and other sites.

Each tutorial at Real Python is created by a team of developers so that it meets our high quality standards. The team members who worked on this tutorial are:

Aldren Santos

Master Real-World Python Skills With Unlimited Access to Real Python

Join us and get access to thousands of tutorials, hands-on video courses, and a community of expert Pythonistas:

Join us and get access to thousands of tutorials, hands-on video courses, and a community of expert Pythonistas:

What Do You Think?

What’s your #1 takeaway or favorite thing you learned? How are you going to put your newfound skills to use? Leave a comment below and let us know.

Commenting Tips: The most useful comments are those written with the goal of learning from or helping out other students. Get tips for asking good questions and get answers to common questions in our support portal . Looking for a real-time conversation? Visit the Real Python Community Chat or join the next “Office Hours” Live Q&A Session . Happy Pythoning!

Keep Learning

Related Topics: intermediate best-practices python

Keep reading Real Python by creating a free account or signing in:

Already have an account? Sign-In

Almost there! Complete this form and click the button below to gain instant access:

Python's Assignment Operator: Write Robust Assignments (Source Code)

🔒 No spam. We take your privacy seriously.

python multiple conditional assignment

  • Python Course
  • Python Basics
  • Interview Questions
  • Python Quiz
  • Popular Packages
  • Python Projects
  • Practice Python
  • AI With Python
  • Learn Python3
  • Python Automation
  • Python Web Dev
  • DSA with Python
  • Python OOPs
  • Dictionaries

Conditional Statements in Python

Understanding and mastering Python’s conditional statements is fundamental for any programmer aspiring to write efficient and robust code. In this guide, we’ll delve into the intricacies of conditional statements in Python, covering the basics, advanced techniques, and best practices.

  • What are Conditional Statements?

Conditional Statements are statements in Python that provide a choice for the control flow based on a condition. It means that the control flow of the Python program will be decided based on the outcome of the condition.

Now let us see how Conditional Statements are implemented in Python.

Types of Conditional Statements in Python

Table of Content

  • Types of Conditional Statement in Python

1. If Conditional Statement in Python

  • 2. If else Conditional Statement in Python
  • 3. Nested if..else Conditional Statement in Python
  • 4. If-elif-else Conditional Statement in Python
  • 5. Ternary Expression Conditional Statement in Python

Best Practices for Using Conditional Statements

If the simple code of block is to be performed if the condition holds then the if statement is used. Here the condition mentioned holds then the code of the block runs otherwise not.

Syntax of If Statement :

 

2. If else Conditional Statements in Python

In a conditional if Statement the additional block of code is merged as an else statement which is performed when if condition is false. 

Syntax of Python If-Else : 

3. Nested if..else Conditional Statements in Python

Nested if..else means an if-else statement inside another if statement. Or in simple words first, there is an outer if statement, and inside it another if – else statement is present and such type of statement is known as nested if statement. We can use one if or else if statement inside another if or else if statements.

           

4. If-elif-else Conditional Statements in Python

The if statements are executed from the top down. As soon as one of the conditions controlling the if is true, the statement associated with that if is executed, and the rest of the ladder is bypassed. If none of the conditions is true, then the final “else” statement will be executed.

       

5. Ternary Expression Conditional Statements in Python

The Python ternary Expression determines if a condition is true or false and then returns the appropriate value in accordance with the result. The ternary Expression is useful in cases where we need to assign a value to a variable based on a simple condition, and we want to keep our code more concise — all in just one line of code.

Syntax of Ternary Expression

 
  • Keep conditions simple and expressive for better readability.
  • Avoid deeply nested conditional blocks; refactor complex logic into smaller, more manageable functions.
  • Comment on complex conditions to clarify their purpose.
  • Prefer the ternary operator for simple conditional assignments.
  • Advanced Techniques:
  • Using short-circuit evaluation for efficiency in complex conditions.
  • Leveraging the any() and all() functions with conditions applied to iterables.
  • Employing conditional expressions within list comprehensions and generator expressions.

Please Login to comment...

Similar reads, improve your coding skills with practice.

 alt=

What kind of Experience do you want to share?

Rolex Pearlmaster Replica

One line if statement in Python (ternary conditional operator)

In the real world, there are specific classifications and conditions on every action that occurs around us. A twelve-year-old person is a kid, whereas a thirteen-year-old person is a teenager. If the weather is pleasant, you can make plans for an outing. But if it isn’t, you will have to cancel your plans. These conditions control the coding world as well. You will encounter various coding problems where you will have to print the output based on some conditions.

Luckily, Python has a straightforward command and syntax to solve such kinds of problems. These are called conditional statements. So let’s begin our discussion on conditional statements, their syntax, and their applications.

Basic if Statement (Ternary Operator) 

Many programming languages have a ternary operator , which defines a conditional expression. The most common usage is to make a terse, simple dependent assignment statement. In other words, it offers a one-line code to evaluate the first expression if the condition is true; otherwise, it considers the second expression. Programming languages derived from C usually have the following syntax:

Basic if Statement

The Python BDFL (creator of Python, Guido van Rossum) rejected it as non-Pythonic since it is hard to understand for people not used to C. Moreover, the colon already has many uses in Python. So, when PEP 308 was approved, Python finally received its shortcut conditional expression:

if else

It first evaluates the condition; if it returns True , the compiler will consider expression1 to give the result, otherwise expression2 . Evaluation is lazy, so only one expression will be executed.

Let's take a look at this example:

Conditions 1

Here we have defined the age variable whose value is fifteen. Now we use the if-else command to print if the kid is an adult or not. The condition for being an adult is that the person’s age should be eighteen or greater than that. We have mentioned this condition in the if-else command. Now let’s see what the output is:

Conditions 2

As we can see, we have obtained the output as “kid” based on the value of the age variable.

We can chain the ternary operators as well:

print 1

Here we have incorporated multiple conditions. This form is the chained form of ternary operators. Let’s check the output:

print 2

This command is the same as the program given below : 

if else statement

The compiler evaluates conditions from left to right, which is easy to double-check with something like the pprint module:

pprint module

Alternatives To The Ternary Operator

For Python versions lower than 2.5, programmers developed several tricks that somehow emulate the behavior of the ternary conditional operator. They are generally discouraged, but it's good to know how they work: 

ternary conditional operator 1

These are various ways to impose conditions in your code :

ternary conditional operator 2

We can see that for various inputs, the same output is obtained for the exact value of the variable.

The problem of such an approach is that both expressions will be evaluated no matter what the condition is. As a workaround, lambdas can help:

print age 1

We obtain the output as follows :

print age 2

Another approach is using 'and' or 'or' statements:

print age 3

Yes, most of the workarounds look ugly. Nevertheless, there are situations when it's better to use 'and' or 'or' logic than the ternary operator. For example, when your condition is the same as one of the expressions, you probably want to avoid evaluating it twice:

void evaluating it twice

Indentations And Blocks

Python is very careful of the syntax of programming statements. We have to maintain proper indentation and blocks while we write composite statements like if-else . The correct indentation syntax of the if-else statement is given as follows:

syntax of programming statements

The statements under 'if' are considered a part of one 'block.' The other statements are not part of the if block and are not considered when statements of 'if' are evaluated.

Python will automatically change the text color if you deviate from this indentation and display an error when you run your code. Let's take an example where we intentionally differ from the proper indentation:

IndentationError 1

We can see here that Python delivers an error message as: "Expected an indented block ."

IndentationError 2

Also, note the color of 'print' in line 3. All the other text is green, while 'print' has the color red. The color variation happens because of the abrupt indentation of 'print.'

Now let us correct the indentation :

print in line

When we have maintained the indentation of Python, we get the output hassle-free.

The else And elif Clauses

Suppose your ‘ if ’ condition is false and you have an alternative statement ready for execution. Then you can easily use the else clause. Now, suppose you have multiple if conditions and an alternative for each one. Then, you can use the elif clause and specify any number of situations. Now let us take an example for each case :

Use of else clause:

The syntax of the   if-else statement is straightforward and has been used multiple times in this tutorial. Let us take a fundamental problem: There is a football team selection. The most critical condition for a candidate's eligibility is that he should be seventeen years or older. If his age is greater than or equal to seventeen, the output will be " You are eligible." If the boy is younger than seventeen years of age, the result will be " Sorry. You are not eligible."

Now let’s look at the code for this problem :

int input 1

Let’s run this code and see what the output is :

int input 2

The program first asks for the user input of age. We first enter the age as sixteen.

int input 3

Now let us enter the age as eighteen and observe the output.

int input 4

Thus we can see that the code assesses the input entered("age") and checks the value against the if-else conditions. If the condition is true, the compiler considers the statement under 'if ' and other statements are ignored. If the condition is false, the compiler executes the statement under 'else ,' and all the other statements are ignored.

Use of elif clause :

We use this clause when we have multiple conditions to check before printing the output. The word elif is compact for ‘ else-if .' When we use the elif clause, the else clause is optional. But if we want to use else clause, there has to be only one clause and that too at the end of the program.

Let us take a problem. We ask the user to enter a number between one and seven, and we display the corresponding weekday name. Let's look at the program for this problem.

int input 5

The above-given code has elif as well as else clause.

Now let’s check the output:

int input 6

The program first asks for user input of a number. Let’s enter four.

int input 7

Now, let's check the output for the input value twelve.

int input 8

Thus, the code works for any user-entered input value.

Conditions dominate every aspect of our real-life situations. To simulate these real-life conditions properly in our virtual world of coding, we, the programmers, need a good grasp on the control statements like if-else . We hope that this article helped you in understanding conditional statements and their syntax in Python. The various problems discussed in this article will help you understand the fundamental concepts of if-else statements and their applications.

About The Author

Anton Caceres

Anton Caceres

  • Python Tips and Tricks

Related Articles

  • Introduction to Python Classes (Part 1 of 2)
  • How to Sort a List, Tuple or Object (with sorted) in Python
  • Best Text Editors for Python development
  • Introduction to SQLite in Python
  • Introductory Tutorial of Python’s SQLAlchemy

Signup for new content

Thank you for joining our mailing list!

Latest Articles

  • Cost-Effective Software Solutions for SaaS and MSP Businesses: How TSplus Fits All Budgets
  • Best Windows Activator Tools 2024 Ultimate Guide for Effective Activation
  • Ultimate Guide to KMSPico Windows Activator 2024 Tips for Easy Activation and Download
  • How Does Python Help in Data Analysis?
  • Beyond Basics: Building Web Applications with Python Frameworks
  • Data Structure
  • csv in python
  • logging in python
  • Python Counter
  • python subprocess
  • numpy module
  • Python code generators
  • python tutorial
  • csv file python
  • python logging
  • Counter class
  • Python assert
  • numbers_list
  • binary search
  • Insert Node
  • Python tips
  • python dictionary
  • Python's Built-in CSV Library
  • logging APIs
  • Constructing Counters
  • Matplotlib Plotting
  • any() Function
  • linear search
  • Python tools
  • python update
  • logging module
  • Concatenate Data Frames
  • python comments
  • Recursion Limit
  • Data structures
  • installation
  • python function
  • pandas installation
  • Zen of Python
  • concatenation
  • Echo Client
  • NumPy Pad()
  • install python
  • how to install pandas
  • Philosophy of Programming
  • concat() function
  • Socket State
  • Python YAML
  • remove a node
  • function scope
  • Tuple in Python
  • pandas groupby
  • socket programming
  • Python Modulo
  • Dictionary Update()
  • datastructure
  • bubble sort
  • find a node
  • calling function
  • GroupBy method
  • Np.Arange()
  • Modulo Operator
  • Python Or Operator
  • Python salaries
  • pyenv global
  • NumPy arrays
  • insertion sort
  • in place reversal
  • learn python
  • python packages
  • zeros() function
  • Scikit Learn
  • HTML Parser
  • circular queue
  • effiiciency
  • python maps
  • Num Py Zeros
  • Python Lists
  • HTML Extraction
  • selection sort
  • Programming
  • install python on windows
  • reverse string
  • python Code Editors
  • pandas.reset_index
  • Infinite Numbers in Python
  • Python Readlines()
  • Programming language
  • remove python
  • concatenate string
  • Code Editors
  • reset_index()
  • Train Test Split
  • Local Testing Server
  • Python Input
  • priority queue
  • web development
  • uninstall python
  • python string
  • code interface
  • round numbers
  • train_test_split()
  • Flask module
  • Linked List
  • machine learning
  • compare string
  • pandas dataframes
  • arange() method
  • Singly Linked List
  • python scripts
  • learning python
  • python bugs
  • ZipFunction
  • plus equals
  • np.linspace
  • SQLAlchemy advance

dnmtechs logo

DNMTechs – Sharing and Storing Technology Knowledge

Javascript, Python, Android, Bash, Hardware, Software and more…

Python Conditional Assignment Operator in Python 3

Python is a versatile programming language that offers a wide range of features and functionalities. One such feature is the conditional assignment operator, which allows programmers to assign a value to a variable based on a condition. This operator, also known as the “ternary operator,” provides a concise and elegant way to write conditional statements in Python.

The conditional assignment operator in Python follows the syntax: value_if_true if condition else value_if_false . It evaluates the condition and returns the value_if_true if the condition is true, otherwise it returns the value_if_false.

This operator can be particularly useful when you want to assign a value to a variable based on a simple condition without the need for an if-else statement. It allows you to write more compact and readable code, reducing the number of lines and improving code efficiency.

Let’s consider a simple example to understand the usage of the conditional assignment operator:

In this example, we assign the value “Adult” to the variable “status” if the age is greater than or equal to 18. Otherwise, we assign the value “Minor”. The output of this code will be “Adult” since the age is 25.

The conditional assignment operator can also be used in more complex scenarios. For instance, consider the following example:

In this example, we assign the sum of x and y to the variable “result” if x is greater than y. Otherwise, we assign the difference between x and y. The output of this code will be 15 since x is greater than y.

Related Evidence

The conditional assignment operator is a widely used feature in Python programming. It provides a concise and efficient way to assign values based on conditions. Many Python developers appreciate its simplicity and readability.

Furthermore, the conditional assignment operator is supported in Python 3 and later versions. It is an integral part of the language’s syntax and is widely documented in Python’s official documentation and various programming resources.

Overall, the conditional assignment operator in Python is a powerful tool that allows programmers to write more concise and efficient code. Its usage can greatly enhance code readability and reduce the complexity of conditional statements.

The Python Conditional Assignment Operator, also known as the “walrus operator,” was introduced in Python 3.8. It allows you to assign a value to a variable based on a condition in a single line of code. This operator is denoted by “:=” and can be used in various scenarios to simplify your code and make it more readable.

In the first example, we use the conditional assignment operator to assign the value True to the variable is_adult if the age is greater than or equal to 18. Otherwise, it assigns False. This simplifies the code and makes it more concise.

In the second example, we assign a default value “John Doe” to the variable name if it is None. This is achieved using the conditional assignment operator in combination with the logical OR operator. If the variable name is None, the expression evaluates to True, and the default_name value is assigned to name.

The third example demonstrates how the conditional assignment operator can be used to assign a value from a function call if the current value of the variable is None. This can be useful when you want to assign a default value from a function only if it hasn’t been set previously.

Overall, the Python Conditional Assignment Operator is a powerful tool that allows you to write more concise and readable code. It simplifies assignments based on conditions and reduces the need for multiple lines of code. However, it should be used judiciously to maintain code clarity and avoid excessive complexity.

Reference Links:

  • Python 3.8 Documentation – Assignment Expressions
  • GeeksforGeeks – Assignment Expressions in Python
  • Real Python – Assignment Expressions (The Walrus Operator)

In conclusion, the Python Conditional Assignment Operator is a valuable addition to the language that simplifies assignments based on conditions. It allows you to write more concise and readable code by reducing the need for multiple lines of code. However, it is important to use it judiciously and maintain code clarity to avoid excessive complexity. The operator has been well-received by the Python community and has become a popular feature in Python 3.8 and later versions.

Related Posts

python multiple conditional assignment

Troubleshooting: Anaconda not found in ZSh

python multiple conditional assignment

Equalizing X and Y Axes in Python 3 Programming

python multiple conditional assignment

Maximizing a plt.show() Window in Python 3 Programming

Multiple assignment in Python: Assign multiple values or the same value to multiple variables

In Python, the = operator is used to assign values to variables.

You can assign values to multiple variables in one line.

Assign multiple values to multiple variables

Assign the same value to multiple variables.

You can assign multiple values to multiple variables by separating them with commas , .

You can assign values to more than three variables, and it is also possible to assign values of different data types to those variables.

When only one variable is on the left side, values on the right side are assigned as a tuple to that variable.

If the number of variables on the left does not match the number of values on the right, a ValueError occurs. You can assign the remaining values as a list by prefixing the variable name with * .

For more information on using * and assigning elements of a tuple and list to multiple variables, see the following article.

  • Unpack a tuple and list in Python

You can also swap the values of multiple variables in the same way. See the following article for details:

  • Swap values ​​in a list or values of variables in Python

You can assign the same value to multiple variables by using = consecutively.

For example, this is useful when initializing multiple variables with the same value.

After assigning the same value, you can assign a different value to one of these variables. As described later, be cautious when assigning mutable objects such as list and dict .

You can apply the same method when assigning the same value to three or more variables.

Be careful when assigning mutable objects such as list and dict .

If you use = consecutively, the same object is assigned to all variables. Therefore, if you change the value of an element or add a new element in one variable, the changes will be reflected in the others as well.

If you want to handle mutable objects separately, you need to assign them individually.

after c = []; d = [] , c and d are guaranteed to refer to two different, unique, newly created empty lists. (Note that c = d = [] assigns the same object to both c and d .) 3. Data model — Python 3.11.3 documentation

You can also use copy() or deepcopy() from the copy module to make shallow and deep copies. See the following article.

  • Shallow and deep copy in Python: copy(), deepcopy()

Related Categories

Related articles.

  • NumPy: arange() and linspace() to generate evenly spaced values
  • Chained comparison (a < x < b) in Python
  • pandas: Get first/last n rows of DataFrame with head() and tail()
  • pandas: Filter rows/columns by labels with filter()
  • Get the filename, directory, extension from a path string in Python
  • Sign function in Python (sign/signum/sgn, copysign)
  • How to flatten a list of lists in Python
  • None in Python
  • Create calendar as text, HTML, list in Python
  • NumPy: Insert elements, rows, and columns into an array with np.insert()
  • Shuffle a list, string, tuple in Python (random.shuffle, sample)
  • Add and update an item in a dictionary in Python
  • Cartesian product of lists in Python (itertools.product)
  • Remove a substring from a string in Python
  • pandas: Extract rows that contain specific strings from a DataFrame
  • Stack Overflow for Teams Where developers & technologists share private knowledge with coworkers
  • Advertising & Talent Reach devs & technologists worldwide about your product, service or employer brand
  • OverflowAI GenAI features for Teams
  • OverflowAPI Train & fine-tune LLMs
  • Labs The future of collective knowledge sharing
  • About the company Visit the blog

Collectives™ on Stack Overflow

Find centralized, trusted content and collaborate around the technologies you use most.

Q&A for work

Connect and share knowledge within a single location that is structured and easy to search.

Get early access and see previews of new features.

How do I assign values based on multiple conditions for existing columns?

I would like to create a new column with a numerical value based on the following conditions:

a. if gender is male & pet1==pet2, points = 5

b. if gender is female & (pet1 is 'cat' or pet1 is 'dog'), points = 5

c. all other combinations, points = 0

I would like the end result to be as follows:

How do I accomplish this?

  • conditional-statements

cottontail's user avatar

  • Using .eval() as in this answer is the fastest pandas option and (arguably) the most readable. –  cottontail Commented Nov 16, 2022 at 21:05

7 Answers 7

Numpy.select.

This is a perfect case for np.select where we can create a column based on multiple conditions and it's a readable method when there are more conditions:

Erfan's user avatar

  • perfect, indeed –  gregV Commented Feb 27, 2023 at 17:57

You can do this using np.where , the conditions use bitwise & and | for and and or with parentheses around the multiple conditions due to operator precedence. So where the condition is true 5 is returned and 0 otherwise:

EdChum's user avatar

using apply .

Ruggero Turra's user avatar

You can also use the apply function. For example:

And then using the apply function by setting axis=1

George Pipis's user avatar

The apply method described by @RuggeroTurra takes a lot longer for 500k rows. I ended up using something like

where the apply method took 25 seconds and this method above took about 18ms.

leonard's user avatar

Writing the conditions as a string expression and evaluating it using eval() is another method to evaluate the condition and assign values to the column using numpy.where() .

If you have a large dataframe (100k+ rows) and a lot of comparisons to evaluate, this method is probably the fastest pandas method to construct a boolean mask. 1

Another advantage of this method over chained & and/or | operators (used in the other vectorized answers here) is better readability (arguably).

1 : For a dataframe with 105k rows, if you evaluate 4 conditions where each chain two comparisons, eval() creates a boolean mask substantially faster than chaining bitwise operators.

  • 1 Thank you very much for this method, this was precisely what I was looking for when stumbled upon this question. I knew about the other mentioned methods, but was recently fascinated by the beauty of eval() and query() syntax from the readability perspective, but failed to come up with a good way of using those for this problem. But this seems to be the way. I know that this answer was posted way later then most others, but it is still a crime that it is so down on votes... –  Binpord Commented Apr 6, 2023 at 20:10

One option is with case_when from pyjanitor ; under the hood it uses pd.Series.mask .

The basic idea is a pairing of condition and expected value; you can pass as many pairings as required, followed by a default value and a target column name:

You could use strings for the conditions, as long as they can be evaluated by pd.eval on the parent dataframe - note that speed wise, this can be slower for small datasets:

Anonymous functions are also possible, which can be handy in chained operations:

sammywemmy's user avatar

Your Answer

Reminder: Answers generated by artificial intelligence tools are not allowed on Stack Overflow. Learn more

Sign up or log in

Post as a guest.

Required, but never shown

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy .

Not the answer you're looking for? Browse other questions tagged python pandas dataframe conditional-statements or ask your own question .

  • Featured on Meta
  • We've made changes to our Terms of Service & Privacy Policy - July 2024
  • Introducing an accessibility dashboard and some upcoming changes to display...
  • Tag hover experiment wrap-up and next steps

Hot Network Questions

  • How to get this fencing wire at a [somewhat] equal tension
  • Fix warning for Beamer subitem bullet with Libertine font (newtx)
  • Normal text and cases
  • If a planet or star is composed of gas, the center of mass will have zero gravity but immense pressure? I'm trying to understand fusion in stars
  • Emphasizing the decreasing condition in the Integral Test or in the AST (in Calculus II): is it worth the time?
  • How does a plane literally "fall from the sky"?
  • Is there an English equivalent to the Hindi proverb, "A washerman's dog belongs neither at home nor at the riverbank"?
  • How do I rigorously compute probabilities over infinite sequences of coin flips?
  • Double accentuation (Homeric Greek)
  • In Norway, when number ranges are listed 3 times on a sign, what do they mean?
  • What type of concept is "mad scientist"?
  • Will a spaceship that never stops between earth and mars save fuel?
  • How important is a "no reflection" strategy for 1 Hz systems?
  • Arduino Board Getting Too Hot: Need Help Diagnosing Issue (Schematic Provided)
  • commands execution based on file size fails with no apparent issues
  • Who‘s to say that beliefs held because of rational reasons are indeed more justified than beliefs held because of emotional ones
  • Grandpa installed this kitchen faucet "once and forever." How do I put in new ball valves?
  • If pressure is caused by the weight of water above you, why is pressure said to act in all direction, not just down?
  • Self-employed health insurance deduction and insurance just for my kids
  • What are these red pointy flower buds with heart-shaped leaves?
  • Is there a simple paradox like Russell's paradox that arises if we assume
  • High-precision solution for the area of a region
  • Will lights plugged into cigarette lighter drain the battery to the point that the truck won't start?u
  • Are story points really a good measure for velocity?

python multiple conditional assignment

IMAGES

  1. Python Conditional Statement Tutorial

    python multiple conditional assignment

  2. 8.9. Chained conditionals

    python multiple conditional assignment

  3. Multi-Conditional If Statement in Python [Explained]

    python multiple conditional assignment

  4. Python Conditional Statements: IF…Else, ELIF & Switch Case (2022)

    python multiple conditional assignment

  5. Python

    python multiple conditional assignment

  6. Python Tutorial 20

    python multiple conditional assignment

COMMENTS

  1. python

    The syntax you requested is not possible. The conditional expression syntax is true-expression if condition else false-expression. - Terry Jan Reedy Jun 1, 2017 at 21:55

  2. Python Conditional Assignment (in 3 Ways)

    Python Conditional Assignment When you want to assign a value to a variable based on some condition, like if the condition is true then assign a value to the variable, else assign some other value to the variable, then you can use the conditional assignment operator.

  3. Python if statements with multiple conditions (and + or) · Kodify

    Python's if statements test multiple conditions with and and or. Those logical operators combine several conditions into a single True or False value.

  4. Python If-Else Statements with Multiple Conditions

    Conditional statements, or if-else statements, allow you to control the flow of your code. Understanding the power of if-else statements allows you to become a stronger Python programmer. This is because they allow you to execute only certain parts of your code if a condition or multiple conditions are met. In this tutorial, you'll learn… Read More »Python If-Else Statements with Multiple ...

  5. Conditional Statements in Python

    In this step-by-step tutorial you'll learn how to work with conditional ("if") statements in Python. Master if-statements and see how to write complex decision making code in your programs.

  6. Python3

    In conditional if Statement the additional block of code is merged as else statement which is performed when if condition is false. Python if-else Statement Syntax

  7. How to Check Multiple Conditions in a Python if statement

    Conditional statements are fundamental to any programming language. Here, we show you how to implement them to check multiple conditions in Python.

  8. A Comprehensive Guide to Using Conditionals in Python with Real-World

    Master conditionals in Python with this in-depth guide to syntax, logic operators, if-elif statements, nested conditionals, ternary operators, common errors and real-world code examples for building dynamic and flexible programs.

  9. How to Use Conditional Statements in Python

    In this article, we'll explore how to use if, else, and elif statements in Python, along with some examples of how to use them in practice.

  10. Python

    Python uses the if, elif, and else conditions to implement the decision control. Learn if, elif, and else condition using simple and quick examples.

  11. Conditional expression (ternary operator) in Python

    Python has a conditional expression (sometimes called a "ternary operator"). You can write operations like if statements in one line with conditional expressions.

  12. Check multiple conditions in if statement

    How do you check multiple things in an if statement Python? You can check multiple conditions in an if statement using logical operators such as and, or, and not.

  13. Python's Assignment Operator: Write Robust Assignments

    In this tutorial, you'll learn how to use Python's assignment operators to write assignment statements that allow you to create, initialize, and update variables in your code.

  14. Conditional Statements in Python

    Understanding and mastering Python's conditional statements is fundamental for any programmer aspiring to write efficient and robust code. In this guide, we'll delve into the intricacies of conditional statements in Python, covering the basics, advanced techniques, and best practices.

  15. One line if statement in Python (ternary conditional operator)

    Many programming languages have a ternary operator, which defines a conditional expression. The most common usage is to make a terse, simple dependent assignment statement. In other words, it offers a one-line code to evaluate the first expression if the condition is true; otherwise, it considers the second expression.

  16. Python Conditional Assignment Operator in Python 3

    Overall, the Python Conditional Assignment Operator is a powerful tool that allows you to write more concise and readable code. It simplifies assignments based on conditions and reduces the need for multiple lines of code.

  17. python

    19 If one line code is definitely going to happen for you, Python 3.8 introduces assignment expressions affectionately known as "the walrus operator".

  18. Multiple assignment in Python: Assign multiple values or the same value

    In Python, the = operator is used to assign values to variables. You can assign values to multiple variables in one line. Assign multiple values to multiple variables Assign the same value to multiple ...

  19. python

    I would like to create a new column with a numerical value based on the following conditions: a. if gender is male &amp; pet1==pet2, points = 5 b. if gender is female &amp; (pet1 is 'cat' or pet1 i...