レッスン2では、「変数」と「リスト」を学びました。変数はC/C++と全く同じ様に使います。
friut = "リンゴ"
price = 200
他のプログラミング言語を触ったことの無い人は、「=」演算子を「左と右は同じ」という風に誤解されるようです。
勿論それは間違いで、「=」は値の代入を現します。
char fruit[]="リンゴ";
int price = 200;
C/C++では上記のように記します。
ちなみに所謂数学での「=」を記述するには「==」という風に記述します。
Pyhtonで非常に楽だなと思ったことは、変数の型を予め宣言すること無く使えるところです。最初の例では、”リンゴ”は文字列(str型のオブジェクト)で200は整数(int型のオブジェクト)です。
次に「リスト」ですが、これは非常に便利なオブジェクトです。C/C++で再現するにはポインタや構造体を駆使した「線形リスト構造」や「双方向リスト構造」など、ちょっとハードルが高いコードを書かなければいけませんが、PythonではC/C++での「配列」を宣言するのと同じ様な感覚で「リスト」が作れてしまいます。
以下に記すのはAnacondaの対話モードを使って書いたもので、「>>>」はコマンドプロンプトです。
>>> fruits = ["リンゴ", "メロン", "バナナ"]
>>> fruits[0]
'リンゴ'
>>> fruits[1]
'メロン'
>>> fruits[2]
'バナナ'
これだけ見れば普通の配列のようですが、
>>> fruits.append("イチゴ")
>>> fruits
['リンゴ', 'メロン', 'バナナ', 'イチゴ'}
の様に、一番最後に自動的に「イチゴ」が追加されています。C/C++での構造体で言うと、自動的にノードがメモリ上に確保され、リストの最後に挿入されたと言う事になります。
ポインタを弄らなくてもリストに追加できるなんて、確かに初心者向けのプログラミング言語と言われるだけは有るなと思います。
ちなみにリスト上の任意の場所にオブジェクトを追加したい場合は
>>> fruits.insert(1, "レモン")
>>> fruits
['リンゴ', 'レモン', 'メロン', 'バナナ', 'イチゴ]
の様にfruitsオブジェクトのinsert関数を使います。オブジェクトは通常0番目からカウントされますので、リンゴの次に「レモンオブジェクト」が挿入されています。
また、オブジェクトを削除するには
>>> fruits.remove('バナナ')
>>> fruits
['リンゴ', 'レモン', 'メロン, 'イチゴ']
の様にremove関数を使います。C++でこれだけの仕組みを作ろうとしたら、ちょっとしたコードを書かなくてはいけません。
他にもsort関数など、便利な関数(どうしても豚はC/C++派なので、メンバ関数と言った方が憶えやすい)が沢山用意されています。
以上、レッスン3とレッスン4の始めの部分までをザッと復習してみました。次回はレッスン4の後半を備忘録がてら復習していきます。