---
# System prepended metadata

title: estudos-em-python-16-outubro

---

## 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

![image](https://hackmd.io/_uploads/r12fSdpyke.png)


### 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']
    
    
    

```