someListという短いリストがいくつか入っています。私がしたいことは、リストの3つの要素ごとに出力され、3番目のスライスの範囲ごとに反復されます。私はリスト内のn番目の範囲をforループとwhileループでスライスします
someList = [1,2,3,4,5,6,7,8,9,10]
を持っているそうだとすれば、私のsomeListの出力は、ここで私は保存するための新しい一時リストを定義している私のコードでこの
[[1, 2, 3], [2, 3, 4], [3, 4, 5], [4, 5, 6], [5, 6, 7], [6, 7, 8], [7, 8, 9], [8, 9, 10]]
よう
する必要があります出力値
someList = [1,2,3,4,5,6,7,8,9,10]
lookupRange = 3
temp = []
for index,i in enumerate(someList):
while index <= len(someList):
temp.append(someList[index:index+lookupRange])
index += 1
print(temp)
このコード私はいくつかのではなく、予期しない結果を得ることを実行しているときにしかし
...
[[1, 2, 3], [2, 3, 4], [3, 4, 5], [4, 5, 6], [5, 6, 7], [6, 7, 8], [7, 8, 9], [8, 9, 10], [9, 10], [10], [], [2, 3, 4, 5, 6, 7, 8, 9, 10], [3, 4, 5, 6, 7, 8, 9, 10], [4, 5, 6, 7, 8, 9, 10], [5, 6, 7, 8, 9, 10], [6, 7, 8, 9, 10], [7, 8, 9, 10], [8, 9, 10], [9, 10], [10], [], [3, 4, 5, 6, 7, 8, 9, 10], [4, 5, 6, 7, 8, 9, 10], [5, 6, 7, 8, 9, 10], [6, 7, 8, 9, 10], [7, 8, 9, 10], [8, 9, 10], [9, 10], [10], [], [4, 5, 6, 7, 8, 9, 10], [5, 6, 7, 8, 9, 10], [6, 7, 8, 9, 10], [7, 8, 9, 10], [8, 9, 10], [9, 10], [10], [], [5, 6, 7, 8, 9, 10], [6, 7, 8, 9, 10], [7, 8, 9, 10], [8, 9, 10], [9, 10], [10], [], [6, 7, 8, 9, 10], [7, 8, 9, 10], [8, 9, 10], [9, 10], [10], [], [7, 8, 9, 10], [8, 9, 10], [9, 10], [10], [], [8, 9, 10], [9, 10], [10], [], [9, 10], [10], [], [10], []]
あなたが見ることができるように、最初の数行のために、私は確かに3のスライス範囲の期間とが、その後所望の出力を得るのですかそれはちょうど狂って行く...
ここで何がうまくいかないのアイデア?
PS:これを行うための簡単な方法(numpy.convolveなど)がありますが、特にforとwhileループで行う必要があります。