文系のIT遊記

「そもそもITって何?」と思っていた28歳♀のIT関係勉強記。

【プログラミング超初心者】用語の確認をする。

 

この単語ってどういう意味なんだっけ

 問題を解いている時、解説を読んでいる時、Pythonのチュートリアルを読んでいる時。

 些細な、しかしあらゆる場面で、使われている単語の意味がわからなくて心が折れそうになる。

 

 わかってて当たり前みたいに書いてるけど、私その言葉知らないからー!!!(心の叫び) 

f:id:bunkei_it:20201030224612j:plain

わからなさすぎて叫びたくなる。

 ただでさえ理解に苦しんでるのに、解説に出てくる単語の意味すらもわからなかったら、何も理解できません。。

 

 例えば。

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( )」という関数を使って中身を順番に取り出すことができる。

 

 こちらの記事の説明もわかりやすい。イテレータは、リストやタプルや辞書(つまりイテラブルオブジェクト)のコピーみたいなもの。という説明。

 ちなみに、図での説明もとってもわかりやすかった。

 

 画像を拝借すると、こんな感じ。

f:id:bunkei_it:20201103182314p:plain
f:id:bunkei_it:20201103182330p:plain
f:id:bunkei_it:20201103182339p:plain
f:id:bunkei_it:20201103182354p:plain
f:id:bunkei_it:20201103182405p:plain
f:id:bunkei_it:20201103182419p:plain


 なるほど。iter関数によってコピーみたいなもの(つまりiterator)が作成されて、next関数で1個ずつ取り出されている。

 一個ずつ取り出されて、中身がだんだん減っていく。

 中身がなくなると終わる。

 listの中身に変化はないけど、iteratorの中身は空っぽになる。

 この、「取り出された要素は消える」というのがイテレータの特徴らしい。

 確かに、リストの中身(要素)を使っても、リストの中身はなくならない。

 

 要素がなくなるまで繰り返す、というところがfor文に似てるなと思ったら、、

for文では「StopIterationが起きたらfor文から抜ける」といった処理が内部的に行われています。

つまり、for文にも内部的にイテレータが使われているということです。

 https://techacademy.jp/magazine/28147 

 

 知らぬ間に、その仕組みを利用していたのでした。

 

お疲れさまでした

 単語がわからないというか、そもそも概念がわかっていなかったイテレータ。

 

 繰り返し可能なオブジェクトはイテラブルオブジェクト。

 イテラブルオブジェクトを利用した連続データがイテレータ。

 イテレータは、イテラブルオブジェクトのコピーのようなもの(しかし「全く同じ」ではない)でもある。

 

 ここまで理解できたからOK!

 明日もがんばろう。