【プログラミングの考え方】 分割

池袋 練馬 大泉学園 保谷 ひばりヶ丘 東久留米 清瀬 秋津

西武池袋線 通勤準急

上記のように、駅名を空白で区切ったものがあるとする。

head と tail

先頭の駅名から1つずつ処理したいときは、最初に欲しい駅名は[池袋]だけなので、

池袋

head

練馬 大泉学園 保谷 ひばりヶ丘 東久留米 清瀬 秋津

tail

👆 1つ目の空白を取り除き、それより先頭側の要素1つ(head と呼ぶ)と、後ろ側の全部の要素(tail と呼ぶ)の2つに分ける手法がある

次に欲しい駅名の[練馬]を取るときも、 head と tail の考え方をもう1回使う。

練馬

head

大泉学園 保谷 ひばりヶ丘 東久留米 清瀬 秋津

tail

これを繰り返して、全部の駅名を取っていくことができる

split

他の方法として、空白で全部分ける、という考え方がある。

池袋

[0]

練馬

[1]

大泉学園

[2]

保谷

[3]

ひばりヶ丘

[4]

東久留米

[5]

清瀬

[6]

秋津

[7]

使い分け

池 袋 練 馬 大泉学園 保 谷 ひばりヶ丘 東久留米 清 瀬 秋 津

👆 データが望んだとおりに綺麗に入っているとは限らない。
ここで、1文字の駅名はなく、2文字の駅名は間に空白が入っていることが分かっているとする。

ここで split という手法を使ってから 先頭の単語が1文字のケース、そうでないケースと1つずつ分けて処理しようとすると

[0]

[1]

[2]

[3]

大泉学園

[4]

[5]

[6]

ひばりヶ丘

[7]

東久留米

[8]

[9]

[10]

[11]

[12]

👆 このようなバラバラの(= tokenize された)データを作ることになる。
トークナイズされたデータを取り扱うのは 簡単のように思える
しかし、プログラミングにおいて、
[簡単のように思える]には以下の2つの意味が伴う。

  1. 問題の解決が簡単のように思える

  2. ヒューマン・ミスすることが簡単のように思える

プログラミングでは、問題の解決が簡単のように思えることよりも、ヒューマン・ミスすることが[難しいように思える]ことの方が時として重要になる場面もある。

👇 ここで head と tail という手法を使うと、ヒューマン・ミスすることが難しいように思える

head

袋 練 馬 大泉学園 保 谷 ひばりヶ丘 東久留米 清 瀬 秋 津

tail

👆 head が1文字なら もう一度 head と tail の手法を使えば2文字目が入っているし、

大泉学園

head

保 谷 ひばりヶ丘 東久留米 清 瀬 秋 津

tail

👆 head が2文字以上なら、そのまま駅名として使える



この記事が気に入ったらサポートをしてみませんか?