Site icon AbsentData

List Comprehension in Python

What is list Comprehension?

This is a method in Python that It allows you to create a new list by transforming and filtering elements from an existing list. The beauty of this is its done in a single line of code. We can use a list and the word iterable interchanged due to a list being an object that can be looped or interated over.

Let’s take a look at how list comprehension is actually structured in Python syntax:

new_list = [expression for item in iterable]

Here is what makes Python list comprehension unique:

So for conditional the syntax is as you see below. We will include the conditional after the interable.

new_list = [expression for item in iterable if condition]

What are Some Examples of List Comprehension

Let take a simple example of apply a calculation to a set of list using list comprehension

Apply a calculation to a list of numbers with list comprehension

#get create our data list
import numpy as np 
numbers = [2, 4, 6, 8, 10]

#list comprehension for the square roots
square_roots = [round(np.sqrt(num)) for num in numbers]

print(square_roots) 
 # Output: [1, 2, 2, 3, 3]

List Comprehension with Text

Where list comprehension is essential is when analyzing text documents. We we need to iterate over each individual word. List comprehension becomes an essential technique.

Count the character lengths in words with list comprehension

words =  ["house", "mouse", "chair", "hair"]
lengths =  [len(word) for word in words]
print(lengths)
#output
[5, 5, 5, 4]

We can also use this technique to tokenize words in a sentence to create separate words at the end of the sentence. This will create a list of words for use from the previous sentence.

sentence = "There is a mouse in this house"
words = [word for word in sentence.split(" ")]
words
# Output
['There', 'is', 'a', 'mouse', 'in', 'this', 'house']

Using Conditional with List Comprehension

We an use the “if” conditional to provide a conditional list. This is an easy technique that will allow you place the condition after the iteration. Let’s square the list values if they are divisible by 2.

numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
squares = [x ** 2 for x in numbers if x % 2 == 0]
print(squares)  # Output: [4, 16, 36, 64, 100]
# Output: [4, 16, 36, 64, 100]

In the next example, let’s use list comprehension to filter words that do not meet a length condition.

words = ['apple', 'banana', 'cherry', 'durian', 'elderberry']
long_words = [word for word in words if len(word) > 6]
print(long_words)  # Output: ['banana', 'elderberry']
# Output: ['banana', 'elderberry']

Filtering with List Comprehension

We can use the list comprehension and conditional to filter a list in by adding the “in” or “not in” parameter. In this example, we will use list comprehension to filter mixed list of values from a existing list of values:

symbols = ["%","$",".","#","@"]
mixed_list = ["bike","%","kite",1,"@","who","$"]
no_symbols = [word for word in mixed_list if word not in symbols]
print(no_symbols)
#Output 
['bike', 'kite', 1, 'who']

Complex Examples of List Comprehension

So, let’s bring together many techniques that we have use before in a complex example.

In this example, we use list comprehension to create a new list result that contains all words from the words list that are longer than five letters and contain at least one vowel. Here’s how the list comprehension works:

Here is what we will end up with

words = ['apple', 'banana', 'cherry', 'durian', 'elderberry']
vowels = ['a', 'e', 'i', 'o', 'u']
result = [word.upper() for word in words if len(word) > 5 for letter in word if letter in vowels]
print(result) 
# Output: ['ELDERBERRY']
Exit mobile version