DEV Community

Piyush Raj
Piyush Raj

Posted on

Python - If Else in List Comprehension

In this tutorial, we will look at how to create a list using a list comprehension that uses an if else logic to decide the final list values.

List comprehensions offer a concise way to create lists in Python and are particularly useful when creating lists using other iterables, filtering lists, etc.

Let's say you have a list, say ls of integers 1 to 10 (both inclusive) and you want to create a new list, say new_ls that contains the string "odd" or "even" depending on whether the corresponding value in ls is odd or even.

Using a list comprehension can be a valid approach for such cases.

How to use if else logic inside a list comprehension in Python?

Use the following syntax to incorporate an if else logic inside a list comprehension.

new_ls = [expression if condition else other_expression for member in iterable]
Enter fullscreen mode Exit fullscreen mode

Here, for each member in the iterable we are checking for our condition which if it evaluates to True, we use the value resulting from expression otherwise we use the value resulting from other_expression as our resulting value in the list comprehension.

Let's now look at an example.

Let's create a list with string values "odd" and "even" for corresponding value in the ls list.

# list of integers from 1 to 10
ls = range(1, 11)
# create list using list comprehension
new_ls = ["odd" if num % 2 != 0 else "even" for num in ls]
print(new_ls)
Enter fullscreen mode Exit fullscreen mode

Output:

['odd', 'even', 'odd', 'even', 'odd', 'even', 'odd', 'even', 'odd', 'even']
Enter fullscreen mode Exit fullscreen mode

We get a list with "odd" and "even" values. For example, for the value 4 in the list ls, its corresponding value in the list new_ls is "even"

Filter values with if in list comprehension

Note that you can also just use the if statement (without the else part) inside the list comprehension. This is commonly used when filtering lists.

Use the following syntax to use just the if construct inside a list comprehension.

new_ls = [expression for member in iterable if condition]
Enter fullscreen mode Exit fullscreen mode

Here, for each member in the iterable we are checking for our condition which if it evaluates to True, we use the value resulting from expression as our resulting value in the list comprehension otherwise we don't do anything (skip that member).

For example, let's filter the above list of integers ls to create a new list with only odd integers.

# list of integers from 1 to 10
ls = range(1, 11)
# create list of odd values in ls using list comprehension
odd_ls = [num for num in ls if num % 2 != 0]
print(odd_ls)
Enter fullscreen mode Exit fullscreen mode

Output:

[1, 3, 5, 7, 9]
Enter fullscreen mode Exit fullscreen mode

We get a list of only the odd numbers in ls.

Top comments (0)