Your Web News in One Place

Help Webnuz

Referal links:

Sign up for GreenGeeks web hosting
May 16, 2021 01:57 am GMT

Superb Comprehensions In Python Using List and Sets

TL:DR :

Dealing with data structures is not a big deal if you are using python, isn't it ?

If it is a big deal, then take look at conversation.
Here, we have 2 noob coders .
Chintu and Mintu. Mintu is technical client in the room and Chintu is A-K-A a developer. Hence, Chintu is implementing the requirements of his client, which are changing very 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 = 100allSum = [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 = 100allSum = [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 = 100allSum = [[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 = 100allSum = [{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 = 100allSum = {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 = 100allSum = 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


Original Link: https://dev.to/sudarshansb143/superb-comprehensions-in-python-using-list-and-sets-1gnd

Share this article:    Share on Facebook
View Full Article

Dev To

An online community for sharing and discovering great ideas, having debates, and making friends

More About this Source Visit Dev To