⚡ Amazing Comprehensions ⚡ In Python Using List and Sets

⚡ Amazing Comprehensions ⚡ In Python Using List and Sets

Handle data structures gracefully and concisely

·

4 min read

📢 TL:DR :

Working with data structures and algorithms is utility skill for every developer. While working with python, the core API of List, Set and Tuples are pretty good if you are new beginner. But as you go further, you will notice there are many handful ways to handle the data structures very efficiently and concisely so here for that here is my little try.

Here, we have 2 newbie coders In the room.

😎 Chintu and 😷Mintu.

😷 Mintu is technical client in the room and 😎Chintu is A-K-A a developer. Hence, the developer is implementing the requirements of his client, which are changing very quite fast (as we all know)


[ M : Mintu, C: Chintu]

😷 M : I want to generate a list of even numbers from 1 to N, but not with classical for.... in loop with range() and all that. Instead with something different

😎 C : Ok ! this is my try

n = 100
allSum = [num  for num in range(1, n+ 1) if num % 2 == 0 ]
print(allSum)

😷 M : Ooops ! I want square of each number, once they are in a list....

😎 C : No worries

n = 100
allSum = [num**2  for num in range(1, n+ 1) if num % 2 == 0 ]
print(allSum)

😷 M : Yahh... It will be pretty nice if it contains original numbers also

😎 C : Ok ! Here we go

n = 100
allSum = [[num, num**2]  for num in range(1, n+ 1) if num % 2 == 0 ]
print(allSum)

😷 M : Awesome !!! but, now I want dictionary of original and squared number instead of nested lists

😎 C : Fine ! I have this

n = 100
allSum = [{num: num**2}  for num in range(1, n+ 1) if num % 2 == 0 ]
print(allSum)

😷 M : Great ! but, now I think all should be in a SET, but by using your previous code

😎 C : Ok Fine ! see this

n = 100
allSum = {num**2 for num in range(1, n+ 1) if num % 2 == 0 }
print(allSum)

😷 M : Cool ! But, now I want iterator instead of the whole list at once

😎 C : OK Sir !

n = 100
allSum = iter([num**2 for num in range(1, n+ 1) if num % 2 == 0])
print(next(allSum ))

😷 M : can you explain why we should prefer list iterator instead of the normal list ?

😎 C : Yup ! List iterator are kind of generator object in nature, which are used to comprehensively yield the values when we call the next() on the object of iterator. The real benefit of creating generator is, that they don't consume memory before actual yielding / producing the value. This saves a lot of runtime memory and gives out programme a free space to use.

Application of this would be like, if we have a database transaction which requires millions of rows to complete the process. In this scenario, if we loaded the data using normal data structure like list, then CPU have to pre-load whole data before actual using it and then proceed further, instead we can use generator / iterator object which yields the value at runtime once anyone demanded.


😷 M : Nice ! but can you create this

image

😎 C : Are you kidding me ! It is so simple


allSum = [i for i in range(0, 7) for j in range (0, i)]
print(allSum)

🤗 M : Kinda cool ! I declare you are not NOOB Now


🚀 Final Thoughts :

This are some comprehensions which anyone can use in their day to day programming usage.

This makes our makes our code more readable and more concise. Although, it is every individual's choice about preferring or not preferring the comprehensions. Here, I am putting my simple try for the comprehension.

Thanks for Reading 🙏🙏