next()
関数はどんなときに使うのですか?
リストなどの複数の要素を持ったデータ型といった「イテレータ」の要素を順番に取り出すことができます。
単純に言うとこうなります。
next( イテレータ )
イテレータはズバリこういうやつです
list1 = ['value1', 'value2', 'value3', 'value4', 'value5']
では、順番に取り出してみます。
list1=["value1,"value2","value3","value4","value5"]
print(list1)
print('リストの要素を順番に取り出す')
list2 = iter(list1)
print(next(list2))
print(next(list2))
print(next(list2))
print(next(list2))
print(next(list2))
["value1","value2","value3","value4","value5"]
リストの要素を順番に取り出す
value1
value2
value3
value4
value5
イテレータは、リストの他にタプルもあります。
タプルというのはこういうやつです。
tuple1=("value1","value2","value3","value4","value5")
では、next()してみましょう。
tuple1=("value1","value2","value3","value4","value5")
print(tuple1)
print('タプルの要素を順番に取り出す')
tuple2 = iter(tuple1)
print(next(tuple2))
print(next(tuple2))
print(next(tuple2))
print(next(tuple2))
print(next(tuple2))
イテレータは、リスト、タプルの他に辞書もあります。
辞書はこういうやつです。
dict1={1:"value1",2:"value2",3:"value3",4:"value4",5:"value5"}
では、やってみます。
dict1={1:"value1",2:"value2",3:"value3",4:"value4",5:"value5"}
print(dict1)
print("・辞書のキーを順番に取り出す")
dict2=iter(dict1.keys())
print(next(dict2))
print(next(dict2))
print(next(dict2))
print(next(dict2))
print(next(dict2))
print("・辞書の値を順番に取り出す")
dict3=iter(dict1.values())
print(next(dict3))
print(next(dict3))
print(next(dict3))
print(next(dict3))
print(next(dict3))
print("・辞書のキーや値を順番に取り出す")
dict4=iter(dict1.items())
print(next(dict4))
print(next(dict4))
print(next(dict4))
print(next(dict4))
print(next(dict4))
他に、setやfrozensetも同様です。
最悪なのは、出力する要素がなくなると、StopIterationエラーが出ます。
この場合、要素がなくなるまでnext()
しなければよいわけですが、なくなったことは検知したいと思います。
そこで、デフォルト値を設定することができます。
next(値,初期値)
具体的には以下のとおりです。
list_value = [ 25 , 35 , 45 ]
iter_value = iter ( list_value )
print ( next ( iter_value, 0 ) )
print ( next ( iter_value, 0 ) )
print ( next ( iter_value, 0 ) )
print ( next ( iter_value, 0 ) )
25
35
45
0
0が返却されたらもうリストはなくなったという処理を行えば良さそうです。
Python で反復可能なオブジェクトを反復するには、組み込みの「next()」関数を使用できます。これにより、反復可能オブジェクトから次の項目が得られ、項目がなくなると「StopIteration」例外で停止します。「next()」関数を使用すると、Python のリスト、文字列、またはその他の反復可能なオブジェクトを簡単にループできます。