この記事では、PHP経験者がPythonを学ぶ過程で戸惑った箇所について説明しています。
新しいプログラミング言語である以上、いろいろと戸惑った箇所はあります。
今回は、その中でも最も戸惑った「配列」について説明します。
「配列」をPythonではどう表現するのか?
実践で使える内容まで解説しています。
本記事の内容
- PHPにおける2つの配列
- 通常の配列(添字配列)はリスト型(list)
- 連想配列は辞書型(dictionary)
- PHPにおける配列はリスト型と辞書型だけでOK
この記事では、PHPプログラマーにとっては有益になるはずです。
Pythonの習得において、時間を節約できるようになることは確実と言えます。
それでは、「配列」を説明していきます。
PHPにおける2つの配列
PHPで配列と言えば、以下の2つが存在します。
- 通常の配列(添字配列)
- 連想配列
ここでは「配列とは?」を説明しません。
なぜなら、PHPで散々「配列」を扱ってきたプログラマーを読者対象としているからです。
2つの配列の定義を確認するための説明はします。
同じ認識を持つ「配列」がイメージされていることの確認ですね。
通常の配列(添字配列)
配列を初期化(宣言)して、その配列に値を追加する処理です。
$ary = array(); array_push($ary, 'a'); array_push($ary, 'b'); array_push($ary, 'c'); print_r($ary)
実行結果は以下。
Array ( [0] => a [1] => b [2] => c )
普段から、PHPでは添字配列をこのように扱っています。
何も難しいところはありませんね。
連想配列
配列を初期化(宣言)して、その配列に値を追加する処理です。
いろいろな方法はありますが、これが最も簡単でしょう。
$ary = array(); $ary["zero"] = 'a'; $ary["one"] = 'b'; $ary["two"] = 'c'; print_r($ary)
実行結果は以下。
Array ( [zero] => a [one] => b [two] => c )
添字配列は、index(数字)によりデータを指定でます。
それに対して、連想配列はキー(文字列OK)でデータを指定します。
2つの配列に関しては、同じ認識でOKですね?
この認識を前提として、Pythonでの「配列」を解説していきます。
通常の配列(添字配列)はリスト型(list)
PHPにおける添字配列は、リスト型(list)と覚えましょう。
これで何一つ困りません。
では、実際のコードを確認します。
リスト型データの初期化(宣言)は、[]です。
ary = [] ary.append('a') ary.append('b') ary.append('c') print(ary) print(ary[0]) print(ary[1]) print(ary[2])
実行結果は以下。
['a', 'b', 'c'] a b c
Pythonでは、print_rのように添字まで表示する関数が見当たりません。
そのため、ary[0]と言う具合に添字を使って値を表示しています。
どうでしょうか?
PHPにおけるただの配列(添字配列)と同じだとわかりますよね。
よって、PHPにおける添字配列はlist型で表現しましょう。
これで困ることはありません。
連想配列は辞書型(dictionary)
PHPにおける連想配列は、辞書型(dictionary)と覚えましょう。
添字配列と同じように、これで全く困りません。
では、実際のコードで辞書型を確認します。
辞書型データの初期化(宣言)は、{}です。
ary = {} ary["zero"] = 'a' ary["one"] = 'b' ary["two"] = 'c' print(ary) print(ary["zero"]) print(ary["one"]) print(ary["two"])
このプログラミングの実行結果は、以下。
{'zero': 'a', 'one': 'b', 'two': 'c'} a b c
問題ありませんね。
辞書型へのデータ追加の方法は、PHPにおける連想配列と全く同じでいけます。
もちろん、利用する際も同じような表現となります。
PHPにおける配列はリスト型と辞書型だけでOK
- 通常の配列(添字配列)はリスト型(list)
- 連想配列は辞書型(dictionary)
上記の考え方で、「配列」をPython上で扱えるはずです。
今のところ、この考え方で困ったことはありません。
もちろん、入れ子にも対応しています。
PHPの配列と同じ考え方で大丈夫です。
この考えをするようになってから、Pythonのデータ操作部分での悩みが一気に減りました。
ただ、PythonにはDataFrame(データフレーム)というデータ型が存在します。
このデータ型の概念は、PHPでは存在しないのではないでしょうか?
多次元配列に近いと言えば近いのですけど、何か違う気もします。
DataFrame(データフレーム)は、Pythonでは避けて通れません。
でも、この記事により、Pythonにおけるリスト型と辞書型は理解できたはずです。
だから、残す(大物)はDataFrame(データフレーム)のみと言えるでしょう。