Если у нас есть небольшие массивы данных, по вариациям которых нужно пройтись, чтобы не использовать вложенный цикл можно использовать 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)