この単語ってどういう意味なんだっけ
問題を解いている時、解説を読んでいる時、Pythonのチュートリアルを読んでいる時。
些細な、しかしあらゆる場面で、使われている単語の意味がわからなくて心が折れそうになる。
わかってて当たり前みたいに書いてるけど、私その言葉知らないからー!!!(心の叫び)
ただでさえ理解に苦しんでるのに、解説に出てくる単語の意味すらもわからなかったら、何も理解できません。。
例えば。
zip()・・・複数のイテラブルオブジェクト(リストやタプル)の要素をまとめて新しいイテラブルオブジェクトを作る関数。forで複数のリストの要素を取得するときなどに使う組み込み関数。
戻り値はzipオブジェクトで、それぞれのiterableの同じインデックスの要素が組み合わされ、タプルのイテレータとして返る。
https://www.webtomoblg.net/web/python3-exam-03/
zip関数がわからない!と思って調べ、親切にも解説してくれている記事にたどり着き、「ふむふむ」と読み始めたはいいものの。
ん? 「イテラブル」って何??
えーっと、「イテレータ」って何??
「インデックス」…はわかる。
「タプル」…もわかる。
でも全体としては意味わからん!!
となる。
そんなわけで、この単語って何?? と直近で思ったものについて、解説してくれている様々な記事や本を参考にしながら、まとめておきたい。
イテラブル
英単語の「iterable」。
意味は「反復可能な」とか「繰り返し可能な」。
繰り返しといえば、for文。
「for~in...」と書く時に「...」の部分に入るやつがイテラブルオブジェクト。
つまり、リスト[ ]や、タプル( )や、辞書{ }。
イテレータ
「iterator」。
英単語を検索しても「イテレータ」としか書いていなかった。そのままじゃないか。
一番わかりやすかったのはこの説明かな〜
イテレータとは、「イテラブルオブジェクトを使用した連続データ」のことです。
https://techacademy.jp/magazine/28147
「イテラブルオブジェクトを利用した連続データ」(つまりイテレータ)は「iter( )」という関数で作ることができる。
そして、「イテラブルオブジェクトを利用した連続データ」(つまりイテレータ)は、「next( )」という関数を使って中身を順番に取り出すことができる。
こちらの記事の説明もわかりやすい。イテレータは、リストやタプルや辞書(つまりイテラブルオブジェクト)のコピーみたいなもの。という説明。
ちなみに、図での説明もとってもわかりやすかった。
画像を拝借すると、こんな感じ。
なるほど。iter関数によってコピーみたいなもの(つまりiterator)が作成されて、next関数で1個ずつ取り出されている。
一個ずつ取り出されて、中身がだんだん減っていく。
中身がなくなると終わる。
listの中身に変化はないけど、iteratorの中身は空っぽになる。
この、「取り出された要素は消える」というのがイテレータの特徴らしい。
確かに、リストの中身(要素)を使っても、リストの中身はなくならない。
要素がなくなるまで繰り返す、というところがfor文に似てるなと思ったら、、
for文では「StopIterationが起きたらfor文から抜ける」といった処理が内部的に行われています。
つまり、for文にも内部的にイテレータが使われているということです。
https://techacademy.jp/magazine/28147
知らぬ間に、その仕組みを利用していたのでした。
お疲れさまでした
単語がわからないというか、そもそも概念がわかっていなかったイテレータ。
繰り返し可能なオブジェクトはイテラブルオブジェクト。
イテラブルオブジェクトを利用した連続データがイテレータ。
イテレータは、イテラブルオブジェクトのコピーのようなもの(しかし「全く同じ」ではない)でもある。
ここまで理解できたからOK!
明日もがんばろう。