Introduction to Python
Programming Cycle of Python
Varibles and Datatypes in Python
Input and Output in Python
Operators in Python
Precedence of Operators in Python
Typecasting in Python
If Else in Python
Loops in Python
Break, Continue and Pass in Python
Functions in Python
Default Arguments and Keyword Arguments in Python
Strings in python
Lists in Python
Tuple in Python
Dictionary in Python
Sets in Python
List Comprehension in Python
Unpacking Sequences in Python
Higher Order Functions in Python
Lambda Functions in Python
Sieve of Eratosthenes Algorithm in Python
Linear Search in Python
Binary Search in Python
Selection Sort in Python
Bubble Sort in Python
Insertion Sort in Python
Merge Sort in Python
List Comprehension in Python
It provides a short syntax to create new lists. Normally, we create lists like this -
list1=[]
for i in range(1,6):
list1.append(i)
print(list1)
Output
[1, 2, 3, 4, 5]
Using List Comprehension, we can create new lists in just 1 line of code.
list2=[i for i in range(1,6)]
print(list2)
Output
[1, 2, 3, 4, 5]
A variety of lists can be created in this way.
m=[1 for i in range(1,6)]
print(list3)
print()
n=[i for i in "Rapid"]
print(list4)
Output
[1, 1, 1, 1, 1] ['R', 'a', 'p', 'i', 'd']
We can also use if-else statements in list Comprehension.
list5=[i for i in range(1,10) if i%3==0 ]
print(list5)
print()
mylist=["Rapid", "Coders", "Excellent", "Coders"]
list6=[i if i != "Excellent" else "Good" for i in mylist ]
print(list6)
Output
[3, 6, 9] ['Rapid', 'Coders', 'Good', 'Coders']
Nested List Comprehension
Suppose that you want to create a nested list with numbers from 1 to 5 in every list.
In one line, you can do it like this -
list7=[[i for i in range(1,6)] for j in range(1,6)]
print(list7)
Output
[[1, 2, 3, 4, 5], [1, 2, 3, 4, 5], [1, 2, 3, 4, 5], [1, 2, 3, 4, 5], [1, 2, 3, 4, 5]]
Now, suppose you want to flatten the above list. You can do it like -
list8=[i for j in list7 for i in j]
print(list8)
Output
[1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5]
Suppose you want to get the tables of all numbers from 2 to 5. You can do it like -
tables=[[i*j for i in range(1,11)] for j in range(2,6)]
for table in tables:
print(table)
Output
[2, 4, 6, 8, 10, 12, 14, 16, 18, 20] [3, 6, 9, 12, 15, 18, 21, 24, 27, 30] [4, 8, 12, 16, 20, 24, 28, 32, 36, 40] [5, 10, 15, 20, 25, 30, 35, 40, 45, 50]
Advantages of List Comprehension
- It is easy to use.
- Reduces lines of code.
- Easy to understand.
Please note that every list cannot be created using List Comprehension.