なにがわからん
l = [1, 2, 3, 4]
next(l) # TypeError: 'list' object is not an iterator
リストってイテレーター(イテラブル)じゃないん?
イテレーターとイテラブル
違います。 リストはイテラブルなオブジェクトだけどイテレーターじゃありません。
『イテレータ』は『イテラブルなオブジェクト』の中の1つでイテレーションした状態を記憶しておくことができるオブジェクト(イテレータ型のオブジェクト)です。1
こう書けばOK
l = [1, 2, 3, 4]
next(iter(l))
もしくはこう
l = [1, 2, 3, 4]
next(o for o in l)
えっ、[a for a in iterable]
って中身だけで成り立つの!?
はい。
str(type(d for d in arr)) # <class 'generator'>
すっきり!