Skip to content
Generic filters
Exact matches only

5 Python Code Smells You Should Be Wary Of

Firstly, lets put it straight: Loops aren’t bad. But when you’re applying transformations inside them, it can lead to long bloated conditional codes.

In such cases, it’s important to not ignore built-in functions like map() filter() and reduce() that are already at our disposal. More importantly, Python provides List comprehensions which is easily the most Pythonic way of replacing for loops.

Nested for loops is another quintessential case of code smell. Python programmers can easily fall prey for them when doing pattern matching or running more than one iterables together. The following code would start looking ugly once you add a few more lines in it:

for x in listA:
for y in listB:
r.append((x, y))

Using itertools not only gives a performance boost but is also flat and clean. Just look how clean the above code would look with itertools.product()

for x, y in itertools.product(listA, listB):     
r.append((x, y))

By using product above, we can also pass it in other high order functions easily.

When iterating over multiple lists simultaneously, using the zip() function is a good idea too(alongwith enumerator if you need index).