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