Python List Comprehension Tutorial

In Python, List Comprehension offers a brief and effective method for generating a new list. New lists can be formed using conditions and filters that are applied to the current list.

Syntax of Python List Comprehension

Below is the structure of Python List Comprehension:

Example

new_list = [expression for item in iterable]

Parameters:

  • expression: The expression determines what gets added to the new list
  • item: Item taken from iterable
  • iterable: sequential data types, such as list, tuple, string, etc.
  • Return Value:

  • This technique generates a fresh list by utilizing the specified expression and criteria.
  • Python List Comprehension Example

Let's examine a straightforward example that demonstrates the functionality of list comprehension.

Example

Example

numlist= [4,32,6,76,12,37,52]

square = [sol ** 2 for sol in numlist]

print(square)

Output:

Output

[16, 1024, 36, 5776, 144, 1369, 2704]

Explanation:

In the preceding example, we generated a list of values called sqrtnum. Subsequently, through the use of list comprehension, we produced a new list referred to as square, which contains the squares of each number found in sqrtnum.

Difference between For Loop and List Comprehension

The main distinction between a for loop and list comprehension lies in the fact that for loops typically span several lines to traverse elements and construct a new list. In contrast, list comprehension achieves the same task in a single line of code. This results in a more concise, understandable, and efficient approach.

Let's see an example to understand this clearly:

1) Using For Loop

In this illustration, a for loop is employed to calculate the square of each number within the list.

Example

Example

numlist = [4, 32, 6, 76, 12, 37, 52]

square = []  # Create an empty list 'square' to store results

for sol in numlist:  # Iterate over each element in the list 'numlist'

    square.append(sol ** 2)  # Square each element and append to 'square'

print(square)

Output:

Output

[16, 1024, 36, 5776, 144, 1369, 2704]

Explanation:

In the previous illustration, we established a list called numlist that holds numerical values, alongside an empty list referred to as square to capture the outcomes. We employed a for loop to traverse each item in the numlist, squaring each value with sol ** 2. Subsequently, we added the resulting value to the square list.

2) Using List Comprehension:

In this instance, we are employing the List Comprehension technique to generate a new list:

Example

Example

#created a list

numlist = [4, 32, 6, 76, 12, 37, 52]

#making a new list with condition

square = [sol ** 2 for sol in numlist]

print(square)

Output:

Output

[16, 1024, 36, 5776, 144, 1369, 2704]

Explanation:

In the example provided, we utilized List comprehension to generate a new list called 'square' by raising each element of the original list 'numlist' to the power of two.

It is evident that there is a distinction between a 'for' loop and list comprehension. The 'for' loop necessitates three lines of code, in contrast to the single line of code needed for list comprehension.

Conditional Statements in List Comprehension

In list comprehension, conditional statements enable the implementation of if-else structures to identify or select items according to particular criteria.

Different Examples for Conditional Statements in Python List Comprehension

Here are a few illustrations that demonstrate how conditional statements can be utilized within Python List Comprehension:

Example 1:

In this instance, we will generate a list containing the elements from the provided list that include the character 'a'.

Example

Example

# given list

car = ['tata', 'honda', 'toyota', 'hyundai', 'skoda', 'suzuki', 'mahindra', 'BMW', 'Mercedes']

# making a new list with condition

new_carlist = [x for x in car if 'a' in x]

# printing new list

print(new_carlist)

Output:

Output

['tata', 'honda', 'toyota', 'hyundai', 'skoda', 'mahindra']

Explanation:

In the preceding example, a list referred to as 'car' is provided. We employed list comprehension to generate a new list termed new_carlist, incorporating a condition that selects only the car names featuring the character 'a'.

Example 2:

In the subsequent illustration, we will compile a list of vehicles that excludes brands from India.

Example

Example

car = ['tata', 'honda', 'toyota', 'hyundai', 'skoda','suzuki', 'mahindra', 'BMW', 'Mercedes']

indian_cars = ['tata', 'mahindra']

new_carlist = [x for x in car if x not in indian_cars]

print(new_carlist)

Output:

Output

['honda', 'toyota', 'hyundai', 'skoda', 'suzuki', 'BMW', 'Mercedes']

Explanation:

In this instance, we employed list comprehension to eliminate the Indian cars from the car list. The criterion 'if x not in indiancars' removes any vehicle present in 'indiancars' and incorporates solely the non-Indian cars into 'new_carlist'.

List Comprehension with String

List Comprehension can also assist in retrieving elements from a string.

Python List Comprehension Example with String

Let’s consider an example to illustrate the use of list comprehension with strings in Python.

Example

Example

name = "Example"

vowels = "aeiou"

# find vowel in the string "Example"

solution = [letter for letter in name if letter in vowels]

print(solution)

Output:

Output

['o', 'i', 'e']

Explanation:

In the preceding illustration, we employed list comprehension to traverse the string "Example" and gather all the vowels. The variable 'solution' holds the outcome.

Creating a List from range

Utilizing the range function within list comprehension allows us to generate and display an extensive list of numbers.

Python List Comprehension Example using range Function

Let us examine an illustration to show how to generate a list utilizing the range function in Python.

Example

Example

# Creating a list of numbers from 0 to 5

num = [x for x in range(5)]

print(num)

Output:

Output

[0, 1, 2, 3, 4]

Explanation:

In this illustration, we have generated a collection of numbers through the use of list comprehension. In this case, it is evident that the range function has been utilized to produce a range object that includes values from 0 to 4.

Creating a List using Nested Loops

Nested loops can also be utilized in List Comprehension to generate a list. Consider the following example that demonstrates the process of creating a list through a nested loop:

Example

Example

#printing cubes of the given range

#List comprehension using nested loop

cubes = [(i, i**3) for i in range(1, 6)]

print(cubes)

Output:

Output

[(1, 1), (2, 8), (3, 27), (4, 64), (5, 125)]

Explanation:

In the preceding illustration, we constructed a nested for loop where i in range(1,6) yields values from 1 to 5. For each value of i, we compute its cube using i**3. The List comprehension captures the results in pairs.

Flattening a list of lists

In Python, list comprehension can be utilized to flatten a nested list (or a list composed of lists). The process of flattening a list involves transforming a nested list into a singular list containing all of its elements.

Python List Comprehension Example for Flattening a list of lists

Consider an example that illustrates the process of flattening a list of lists using Python list comprehension.

Example

Example

#given list

lists = [[3, 56, 21], [59, 15, 36], [27, 88, 69]]

#using the list comprehension method

solution = [x for y in lists for x in y]

print(solution)

Output:

Output

[3, 56, 21, 59, 15, 36, 27, 88, 69]

Explanation:

  • for y in list: It iterates over each sublist [1,2,3] and then [4,5,6]
  • for x in y: It iterates over each element in that sublist.
  • x: adds each element into the flattened list
  • Conclusion

Python List Comprehension serves as a powerful approach to retrieve elements from a list and generate a new list according to defined criteria.

List Comprehension can be used with:

  • String (character filtering or transformation)
  • Nested Loops (for matrix operations or combinations)
  • Flattening of List
  • range method (to generate sequences)
  • Conditional Statements (to filter or modify data)

List comprehension extends beyond the examples and applications provided; it is essential to delve deeper into this subject.

Python List Comprehension FAQs

1. What is List Comprehension in Python?

Python List Comprehension offers a succinct and effective method for generating a new list.

2. Can we use nested loops in List Comprehension?

Indeed, nested loops can be utilized within List Comprehension. Below is an illustration.

Example

Example

square = [(i, i**2) for i in range(1, 6)]

print(square)

Output:

Output

[(1, 1), (2, 4), (3, 9), (4, 16), (5, 25)]

3. Can we use strings in List Comprehension?

Yes, we can use strings in List Comprehension.

Example

Example

solution = [word for word in 'Example' if word in 'aeiou']

print(solution)

Output:

Output

['o', 'i', 'e']

4. Is List Comprehension faster than traditional loops?

Indeed, in most cases, list comprehension offers improved speed and better memory efficiency when generating new lists.

5. When should we not use List Comprehension?

List Comprehension should be avoided in scenarios where the code contains several nested loops or when a list is not necessary.

Input Required

This code uses input(). Please provide values below: