Замена вложенных циклов for с помощью itertools.product()

Опубликован: 11.08.2023 85

Как избежать вложенных циклов for с помощью itertools.product()

Когда программа становится сложной, неизбежно приходится писать вложенные циклы. Однако вложенные циклы делают программы более сложными для чтения и сопровождения. К счастью, в Python всегда можно избежать вложенных циклов с помощью функции product() встроенного модуля itertools.

Например, у нас есть следующая программа, которая содержит трехуровневые вложенные циклы for:

list_a = [1, 2020, 70]
list_b = [2, 4, 7, 2000]
list_c = [3, 70, 7]
for a in list_a:     
    for b in list_b:         
        for c in list_c:             
            if a + b + c == 2077:                 
                print(a, b, c) 
70 2000 7

Чтобы сделать код более аккуратным и чистым (легко читаемым), можно воспользоваться функцией itertools.product():

from itertools import product  

list_a = [1, 2020, 70] 
list_b = [2, 4, 7, 2000] 
list_c = [3, 70, 7]  

for a, b, c in product(list_a, list_b, list_c):     
     if a + b + c == 2077:         
          print(a, b, c) 
70 2000 7

Похожие посты

Фильтрация элементов итератора с помощью bool-списка функции itertools.compress()

Пропуск не нужных элементов последовательности с помощью itertools.dropwhile()

Возвращение элементов списка пока условие истинно с помощью itertools.takewhile()

Бесконечные итераторы в Python itertools.count(), cycle(), repeat()

Комментариев нет.