DEV Community

artem
artem

Posted on

Избавляемся от вложенных циклов с itertools.product

Если у нас есть небольшие массивы данных, по вариациям которых нужно пройтись, чтобы не использовать вложенный цикл можно использовать itertools.product.

Представим

colors = ['black', 'white', 'yellow']
animals = ['rabbit', 'shark', 'quokka']

Дефолт код, для прохода по всем комбинациям из массивов

for color in colors:
  for animal in animals:
    print(f'{color} {animal}')

сокращается с itertools

import itertools

for color, animal in itertools.product(colors, animals):
  print(f'{color} {animal}')

и как бонус однострочник

[print(f'{color} {animal}') for color, animal in itertools.product(colors, animals)]

как минус - создается новый объект, поэтому для больших объемов данных нецелесообразно
как плюс - в качестве аргументов можно передать любое количество массивов - получим все их комбинации

Top comments (0)