Use itertools instead of loopsAlthough loops are cool, they have limitations, especially in modern programming styles and for certain types of tasks. Understanding these limitations helps to choose the right tool for the task. Each iteration of a loop in Python incurs interpreter overhead, such as type checking and memory management. On large datasets, this can add up significantly.
To circumvent this limitation, Python has a convenient built-in library called itertools. For example, suppose you need to generate all unique pairs from a given list. The order doesn't matter, and no element should form a pair with itself.
To avoid bloated code and reduce the risk of bugs, you can use the itertools library. The function itertools.combinations() directly generates all unique combinations of elements from an iterable without duplicates and without considering order.
Here's how to rewrite the code using combinations from itertools:
from itertools import combinations
def get_unique_pairs_itertools(items):
return list(combinations(items, 2))
my_list = ['A', 'B', 'C', 'D']
print(get_unique_pairs_itertools(my_list))
Output:
[('A', 'B'), ('A', 'C'), ('A', 'D'), ('B', 'C'), ('B', 'D'), ('C', 'D')]
👉
@datascience4