次のようにシミュレートするタプルジェネレーターがあるとしましょう。
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)
そのため、最後に近づいたときを除いて、一度に 3 つの連続した項目を反復して印刷しています。
関数の最初の行は次のようになります。
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)
更新:
ウィンドウの長さを指定する 2 番目の引数を取るように関数を更新したことに注意してください。