# Reduce the use of loops in Python

Posted on Dec. 2, 2022, 6:25 p.m. by Mannat Mane
Category: The back-end
• Minimize for loop usage in Python
• By Rahul Agarwal
• Translation from: The Gold Project
• Translator: qiuyuezhong

# Reduce the use of loops in Python

How and why should you reduce the use of loops in Python?

Python gives us a variety of encoding options.

In a way, this is quite inclusive.

People from any language can write Python.

However, learning to write a language and writing a language in an optimal way are two different things.

In this series of articles called Python Shorts, I'll explore some of the simple but very useful structures that Python provides, along with some tips and examples that I've encountered in my data science work.

In this article, I'll discuss for loops in Python and how to avoid them as much as possible.

## There are three ways to write a for loop:

Let me illustrate with a simple example.

Suppose you want to get the sum of squares of a list.

In machine learning, we all face this problem when we want to calculate the distance between two points in n dimensions.

You can do this easily using loops.

In fact, I'd like to show you three ways I've seen to accomplish the same task, and let you choose which one you think is best.

``````x = [1.3.5.7.9]
sum_squared = 0

for i in range(len(x)):
sum_squared+=x[i]**2
Copy the code``````

When I see the above code in Python code, I know this person has a C or Java background.

A more Pythonic way to accomplish the same thing is:

``````x = [1.3.5.7.9]
sum_squared = 0

for y in x:
sum_squared+=y**2
Copy the code``````

That's even better.

I didn't index this list. And my code is more readable.

However, the more Pythonic way can be done in one line.

``````x = [1.3.5.7.9]
sum_squared = sum([y**2 for y in x])
Copy the code``````

This method is called List Comprehension, and it's probably one of the reasons I fell in love with Python.

You can also use if in List Comprehension.

Suppose we only want the list of even squares.

``````x = [1.2.3.4.5.6.7.8.9]
even_squared = [y**2 for y in x if y%2= =0]
# Output results:
[4.16.36.64]
Copy the code``````

`if-else`?

What if we want an even number squared and an odd number cubed?

``````x = [1.2.3.4.5.6.7.8.9]
squared_cubed = [y**2 if y%2= =0 else y**3 for y in x]
# Output results:
[1.4.27.16.125.36.343.64.729]
Copy the code``````

That's great!

So, in general, follow this specific rule: Whenever you want to write a for statement, you should ask yourself the following questions,

• Don't have to`for`Do it? More Pythonic style.
• Can I do that using List Comprehension? If so, use it.
• Can I not index arrays? If not, consider using it`enumerate`.

What is enumerate?

Sometimes we need both the index in the array and the value in the array.

In this case, I prefer to use Enumerate instead of indexed lists.

``````L = ['blue'.'yellow'.'orange']
for i, val in enumerate(L):
print("index is %d and value is %s" % (i, val))
# Output results:
index is 0 and value is blue
index is 1 and value is yellow
index is 2 and value is orange
Copy the code``````

Here's a rule:

Never index a list if you can't use it.

## Try using Dictionary Comprehension

You can also try Dictionary Comprehension, which is a relatively new addition to Python and has a syntax similar to List Comprehension.

Let me illustrate with an example. I want to get a dictionary (key: square) for each value in x.

``````x = [1.2.3.4.5.6.7.8.9]
{k:k**2 for k in x}
# Output results:
{1: 1.2: 4.3: 9.4: 16.5: 25.6: 36.7: 49.8: 64.9: 81}
Copy the code``````

What if you just want a dictionary with even values?

``````x = [1.2.3.4.5.6.7.8.9]
{k:k**2 for k in x if x%2= =0}
# Output results:
{2: 4.4: 16.6: 36.8: 64}
Copy the code``````

What if I want to get an even number squared and an odd number cubed?

``````x = [1.2.3.4.5.6.7.8.9]
{k:k**2 if k%2= =0 else k**3 for k in x}
# Output results:
{1: 1.2: 4.3: 27.4: 16.5: 125.6: 36.7: 343.8: 64.9: 729}
Copy the code``````

## conclusion

Finally, I will say that while it may seem easy to transfer knowledge from other languages to Python, if you continue to do so, you will miss the beauty of Python. When we use it the way Python does, it's much more powerful and much more interesting.

So, when needed`for`When looping, use List Comprehensions and Dictionary Comprehensions. Use when an array index is needed`enumerate`.

Avoid a cycle like an epidemic

In the long run, your code will be more readable and maintainable.

Also, if you want to learn more about Python 3, I would recommend Intermediate Level Python, an excellent course at the University of Michigan. Definitely check it out.

In the future I will also write more articles suitable for beginners. Please let me know what you think of this series. Follow me on Medium or subscribe to my blog for more information.

As always, I welcome feedback and constructive comments, which can be reached on Twitter at @mlWhiz.

Originally published on April 23, 2019mlwhiz.com.