Хотя циклы это круто, но у них есть ограничения, особенно в современных стилях программирования и для некоторых типов задач. Понимание этих ограничений помогает выбрать правильный инструмент под задачу. Каждая итерация цикла в Python дает накладные расходы интерпретатора, например проверки типов и управление памятью. На больших датасетах это может заметно накапливаться.
Чтобы обойти это ограничение, в Python есть удобная встроенная библиотека itertools. Например, допустим, вам нужно сгенерировать все уникальные пары из заданного списка. Порядок не важен, и ни один элемент не должен образовывать пару сам с собой.
Чтобы не раздувать код и снизить риск багов, можно использовать библиотеку itertools. Функция itertools.combinations() напрямую генерирует все уникальные комбинации элементов из iterable без повторений и без учета порядка.
Вот как можно переписать код, используя combinations из 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')]
👉 @PythonPortal
