## Espaço de Tecnologias e Artes - Sesc Avenida Paulista
## Grupo de estudos em Python
### `hackmd.io/@sesc-av-paulista/estudos-em-python-16-outubro`
## `itertools` Funções que criam iteradores para laços eficientes - [documentação oficial](https://docs.python.org/pt-br/3.11/library/itertools.html)
### Iteradores combinatórios

### Contagem, repetição e ciclos
```python=
from itertools import zip_longest, cycle
frutas = ['lichia', 'laranja', 'avocado', 'uva', 'banana', 'manga', 'damasco', 'pêssego']
carnes = ['picanha', 'pato', 'ceviche', 'cordeiro', 'carne seca', 'faisão', 'vitela', 'sardinha', 'moela']
vegetarianos = ['omelete', 'queijo qualho']
veganos = ['tofu', 'pvt', 'cogumelos']
# for fruta, carne in zip_longest(frutas, carnes, fillvalue='farofa'):
# print(fruta + ' vai bem com ' + str(carne))
# contador_ceviche = 0
# for carne in cycle(carnes):
# print(carne)
# if carne == 'ceviche':
# #contador_ceviche = contador_ceviche + 1
# contador_ceviche += 1
# print(f'ceviches vistos: {contador_ceviche}!')
# if contador_ceviche >= 100:
# break
opcoes_de_carne = cycle(carnes)
opcoes_vegetarianas = cycle(('omelete', 'queijo qualho'))
opcoes_veganas = cycle(('pvt', 'tofu', 'cogumelos'))
# for n in range(10):
# cardapio = []
# cardapio.append(next(opcoes_de_carne))
# cardapio.append(next(opcoes_de_carne))
# cardapio.append(next(opcoes_de_carne))
# cardapio.append(next(opcoes_vegetarianas))
# cardapio.append(next(opcoes_veganas))
# linhas_pratos = '\n'.join(cardapio)
# print(f"Cardapio {n}:\n{linhas_pratos}\n")
from itertools import product, combinations
n = 0
for carnes3, v1, v2 in product(
combinations(carnes,3),
vegetarianos,
combinations(veganos, 2)
):
cardapio = []
cardapio.extend(carnes3)
cardapio.append(v1)
cardapio.extend(v2)
linhas_pratos = '\n'.join(cardapio)
print(f"Cardapio {n}:\n{linhas_pratos}\n")
n += 1
>>> choice(carnes)
'cordeiro'
>>> sample(carnes, 3)
['picanha', 'moela', 'faisão']
>>> sample(carnes, 3)
['faisão', 'vitela', 'sardinha']
>>> sample(carnes, 3)
['carne seca', 'vitela', 'faisão']
>>> sample(carnes, 3)
['carne seca', 'pato', 'vitela']
>>> sample(carnes, 3)
['moela', 'sardinha', 'vitela']
>>> sample(carnes, 3)
['carne seca', 'vitela', 'sardinha']
>>> sample(carnes, 3)
['picanha', 'sardinha', 'vitela']
>>> sample(carnes, 3)
['moela', 'pato', 'faisão']
>>> sample(carnes, 3)
['faisão', 'moela', 'picanha']
>>> sample(carnes, 3)
['pato', 'faisão', 'moela']
>>> sample(carnes, 3)
['carne seca', 'cordeiro', 'faisão']
>>> sample(carnes, 3)
['sardinha', 'ceviche', 'moela']
>>> sample(carnes, 3)
['picanha', 'cordeiro', 'sardinha']
>>> veganos[7:9]
[]
>>> carnes[7:9]
['sardinha', 'moela']
>>> carnes[7:]
['sardinha', 'moela']
>>> carnes[5:]
['faisão', 'vitela', 'sardinha', 'moela']
>>> carnes[:6]
['picanha', 'pato', 'ceviche', 'cordeiro', 'carne seca', 'faisão']
```