2
Help us understand the problem. What are the problem?

posted at

[備忘録] リスト, イテラブル, イテレーター ああっ訳がわからん!

なにがわからん

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'>

すっきり!

  1. Pythonのイテラブル(iterable)とイテレータ(iterator)

Register as a new user and use Qiita more conveniently

  1. You can follow users and tags
  2. you can stock useful information
  3. You can make editorial suggestions for articles
What you can do with signing up
2
Help us understand the problem. What are the problem?