Acessando itens consecutivos ao usar um gerador
Vamos dizer que eu tenho um gerador de tupla, que eu simulo da seguinte forma:
g = (x for x in (1,2,3,97,98,99))
Para este gerador específico, desejo escrever uma função para gerar o seguinte:
(1,2,3)
(2,3,97)
(3,97,98)
(97,98,99)
(98,99)
(99)
Então, estou repetindo três itens consecutivos de cada vez e imprimindo-os, exceto quando me aproximo do final.
A primeira linha da minha função deve ser:
t = tuple(g)
Em outras palavras, é melhor trabalhar diretamente com uma tupla ou pode ser benéfico trabalhar com um gerador. Se for possível abordar este problema usando ambos os métodos, indique os benefícios e desvantagens das duas abordagens. Além disso, se for aconselhável usar a abordagem do gerador, como essa solução pode parecer?
Aqui está o que eu faço atualmente:
def f(data, l):
t = tuple(data)
for j in range(len(t)):
print(t[j:j+l])
data = (x for x in (1,2,3,4,5))
f(data,3)
ATUALIZAR:
Observe que atualizei minha função para obter um segundo argumento, especificando o comprimento da janela.