Доступ к последовательным элементам при использовании генератора

Допустим, у меня есть генератор кортежей, который я моделирую следующим образом:

g = (x for x in (1,2,3,97,98,99))

Для этого конкретного генератора я хочу написать функцию для вывода следующего:

(1,2,3)
(2,3,97)
(3,97,98)
(97,98,99)
(98,99)
(99)

Поэтому я перебираю по три последовательных элемента за раз и печатаю их, за исключением случаев, когда я подхожу к концу.

Должна ли первая строка в моей функции быть:

t = tuple(g)

Другими словами, лучше ли работать с кортежем напрямую или было бы полезно работать с генератором. Если возможно решить эту проблему, используя оба метода, пожалуйста, укажите преимущества и недостатки обоих подходов. Кроме того, если было бы разумно использовать генераторный подход, как могло бы выглядеть такое решение?

Вот что я сейчас делаю:

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)

ОБНОВИТЬ:

Обратите внимание, что я обновил свою функцию, чтобы получить второй аргумент, определяющий длину окна.

Ответы на вопрос(7)

Ваш ответ на вопрос