Python Comprehensions
Comprehensions in Python can be defined as the Pythonic way of writing code. Using comprehension, we compress the code so it takes less space. Comprehension in Python converts the four to five lines of code into a one-liner. In this tutorial, we will see the ways to write the code we used to write earlier in four to five lines, in just one line.
Comprehension’s importance comes in the scenarios when the project is too big, for example, Google is made up of 2 billion lines of code, Facebook is made from 62 million lines of code, Windows 10 has roughly 50 million lines of code. So in such scenarios, comprehension has to be implemented as much as we can so that the lines of code decreases and the efficiency increases.
We will now learn ways to create a comprehensive way of implementing the functions. The concept is the same; the only difference comes in writing them i.e. in a more compact form. To understand the working, you can refer to the tutorial links given above as our focus will be more towards syntax in this part.
List as ordinarily are written as such:
listA = []
for a in range(50):
if a%5==0:
listA.append(a)
While it can be written in a one liner format using comprehension as such:
listA = [a for a in range(50) if i%5==0]
The compressed code works exactly like the one above but with more precision.
Set comprehension works exactly the same way as List comprehension. The syntax is almost the same two, except for the brackets i.e. set uses curly brackets. The main difference arrives while printing the items as a set will only print the same items once.
alpha = {alpha for alpha in ["a", "a", "b", "c", "d", "d"]}
Output
{'a', 'b', 'c', 'd'}
In the case of the dictionary, it has more benefits as we can alter the sequence of the dictionary by printing the values before the keys. We can also write conditional statements, that in the case of dictionary consumes 8-9 lines in just a single one. The syntax for a dictionary using ordinary syntax is:
Normaldict = {
0 : "item0",
1 : "item1",
2 : "item2",
3 : "item3",
4 : "item4",
}
And the more compact one is:
Compdict = {i:f"Item {i}" for i in range(5)}
We can implement comprehension on generators too.
def gener(n):
for i in range(n):
yield i
a = gener(5)
print(a.__next__())
We can also create a one liner for generators too by following the syntax below.
gener = (i for i in range(n))
a = gener(5)
print(a.__next__())