リストがあるとしましょう:
listOfStuff =([a,b], [c,d], [e,f], [f,g])
私がやりたいのは、次のコードのような方法で中間の2つのコンポーネントを反復処理することです。
for item in listOfStuff(range(2,3))
print item
最終結果は次のようになります。
[c,d]
[e,f]
現在、このコードは機能しませんが、私がやろうとしていることを理解していただければ幸いです。
listOfStuff =([a,b], [c,d], [e,f], [f,g])
for item in listOfStuff[1:3]:
print item
Tupleのスライスを反復処理する必要があります。 1
は最初に必要な要素であり、3
(実際には2 + 1)は、必要のない最初の要素です。
リスト内の要素は0から数えられます:
listOfStuff =([a,b], [c,d], [e,f], [f,g])
0 1 2 3
[1:3]
は要素1と2を取ります。
リストのスライスを反復処理するよりメモリ効率の良い方法は、itertools
モジュールのislice()
を使用することです。
from itertools import islice
listOfStuff = (['a','b'], ['c','d'], ['e','f'], ['g','h'])
for item in islice(listOfStuff, 1, 3):
print item
# ['c', 'd']
# ['e', 'f']
ただし、範囲の開始値が大きい値である場合、islice
_は項目を返す前に最初の開始値1の項目を反復処理する必要があるため、これはパフォーマンスの点で比較的非効率的です。
スライシングを使用します。
for item in listOfStuff[1:3]:
print item
iter
ビルトインを使用して:
l = [1, 2, 3]
# i is the first item.
i = iter(l)
next(i)
for d in i:
print(d)