Previously in this Python Tutorial, we have already learned what Python Lists are and how to use them. We also understood Python list comprehensions in brief. In this section, we will go in the depths of Python List comprehension and understand why we need it. In case you want to jump to a specific topic in this Python List Comprehension tutorial, following is the list of all the topics that we will cover in this section.
Some of the programming languages have a syntactic construct called List comprehension for creating lists on the basis of existing lists. Python is one such language. In other words, List comprehensions are used for converting one list into another list or creating a new list from another iterables.
A List comprehension consists of:
Let’s take a brief look over Python Lists before starting with Python List comprehensions.
Python List is a compound datatype in python where you can group together various values. These values need not be of same type, you can combine Boolean, string and integer values together and save them as Lists.
The syntax of Python Lists consists of two square brackets inside of which we define our values separated by commas. These values can be of any data type.
The syntax of Python List comprehension consists of square brackets inside of which we write an expressions followed by a “for clause”, then more “for or if clauses” as needed.
The expressions can be anything. You can input any kind of object in the lists.
When compared to normal Python Lists syntax, the above syntax is equivalent to
The resultant is a new list that is created after the evaluation of the expression in accordance with the “for and if” clauses provided after the expression.
Thus we can replace the following code for defining and creating a list in Python:
With the following equivalent code in Python List Comprehension to obtain the same result:
List comprehension is an elegant and concise way of creating a list in Python. There are many benefits of using Python List comprehensions and the most basic benefit can be seen from the syntax alone. We reduced three lines of code into one liner. Not just that but the code in Python List comprehension is much faster also. With Python List comprehension, instead of having to resize the list on runtime, python will now allocate the list’s memory first, which makes it faster in this case.
Moreover, the code using Python List comprehension is considered to be more fitting in the guidelines of Python making it more Pythonic in nature.
Now that we know the syntax of Python List comprehensions, let try out some examples.
Example 1: Let’s start by creating a simple list.
Example 2: Now let’s create a list using “for” clause in list comprehension.
Example 3: Let’s create a new list by making some changes in an already existing list.
In the above code block the new list is named new_multiplied_list and it is obtained by multiplying 2 by every element of the old list which is named as list1.
Example 4: Now let’s create a new list containing the first letters of every element in an already existing list.
Whenever we want to repeat a block of code for a fixed number of times, the first way of doing it that we think of is “for loops”. List comprehensions are also capable of doing the same, that too with a better approach than “for loops”, since List comprehensions are more compact. Hence it provides a very good alternative to for loops.
Let’s take an example here, let’s say we want to separate the letters of a word and create a list containing those letters.
The code block for the same in case of using for loop will be:
We can obtain the same result using List Comprehension with lesser number of code lines as shown below:
While using Python List Comprehensions we don’t necessarily need a list to create another list. We can use strings as well and list comprehension we identify it as string and work on it as a list. Like in above example of List comprehension code block, Intellipaat is a string not a list.
In python we also use lambda functions to modify and manipulate lists. Lambda functions are also known as anonymous functions. Lambda functions are usually used with various built it functions such as map() filter() and reduce() to work on lists.
Let’s first see how we use map() with Lambda function to work on lists:
In the above block of code, we have used map() with lambda to create a list containing the letters of the string “intellipaat” separated by comas. The name of the list is letters.
We can obtain the same result using Python List Comprehensions. The codes in Python List comprehensions are also more human readable and easier to understand.
Follow the following steps to write the equivalent Python List comprehension code:
So the final code using Python List Comprehension in our case looks like:
Now that we know how we can use Python list comprehension as an alternative for map() function combined with lambda, let’s now see how we can also use Python List Comprehensions as an alternative for filter() function.
In the following code block we have used filter() with lambda to filter out odd values from an existing list and then saving the filtered values in a new list.
The name of the new list in our example is new_list.
The same result can be obtained using Python List Comprehension as shown below:
As mentioned above, we can also write the lambda functions codes with reduce() functions to make the code short and more efficient using Python List comprehensions.
The following block of code is an example of reduce() with lambda:
Note: Recently the reduce module was moved to functools package so If you are using Python 3 then you will have to import reduce module from functools as shown in the above code block.
The resultant list contains the sum of all the elements of the list list1.
The same result can be obtained using Python List comprehension as shown below:
Note: Python List Comprehensions only work with one variable so the use of Y here is not allowed. So to perform the above task we can use aggregation function such sum().
We can also make use of conditional statements in List Comprehensions to modify and manipulate lists. Let’s learn how to do that with the help of some examples. Here we will use a mathematical function range() which defines the range that we want to use in our examples. It takes one integer as a parameter and the range starts from 0 to the number one less than the parameter provided. For example, range(20) will consider the range of numbers from 0 to 19.
Example1: Using if statement in Python List comprehension
Example2: Using Nested IF with Python List Comprehension
In the above example, the first condition that the List comprehension checks is if x is divisible by 2 and then if the condition is met it encounters the other conditional statement and checks if the x which was found to be divible by 2 is also divisible by 5.
If both the conditions are met ony then x is appended to the list new_list.
Example3: Using if else statement with Python List comprehension
In the above example the list comprehension checks all the numbers starting from 0 to 9. If x is found to be divisible by 2 ” x is even”(where x is the respective number) is appended to the even_odd list, if the condition is not met then the else statement is executed and “x is odd”( where x is the respective number) is appended in the even_odd list.
Whenever we talk about nested list, the first method to implement nested lists that comes to our mind is using nested loops. As we have already seen that Python List Comprehension can be used as an alternative for loops, so obviously it can also be used for nested loops. Let’s see how by taking an example.
Let’s say we want to display the tables of 4,5 and 6. Now using regular nested for loops we would write the following code block to implement the same:
The output would be:
We can obtain the same result using Python List Comprehension, the code block we will use will be:
In the above example, we have used the “for loop” for y as the inner comprehension.
Python List comprehensions are found to be faster and more user-friendly than for loops and lambda functions. The speed and the readability are what that makes the Python List Comprehensions a favorable alternative for loops and lambda function. Mastering Python List Comprehension can make your codes more efficient, faster, and shorter. While we have covered all the main topics along with the examples, there is more to learn about Python. If you want in-depth knowledge and fully up to date study material then you should check out this well structured Python Certification Training Course by Intellipaat. This course will help you master all main modules and packages in Python, web scraping libraries, lambda function and more. You will learn how to write Python codes for big data systems such as Hadoop. And you will get plenty of hands-on exercises to practice and master Python.Previous Next
Download Interview Questions asked by top MNCs in 2019?