世間ではプログラミング教育の必要性が叫ばれ、ついに小学校でもプログラミング教育が取り入れられようとしています。このような急速なIT化についていくため、Pythonを始めた方も多いですよね。
Pythonでプログラミングをしていると、たくさんのデータに対して同じ処理をしたい場面が多々発生します。そんなときには、Pythonのリスト(配列)にデータを格納するため、リスト(配列)を作って初期化する必要があります。
そこで今回はプログラミング初心者向けに、Pythonのリスト(配列)初期化について解説しましょう。
Pythonで空のリスト(配列)を初期化する
まず、リスト(配列)とは「カンマ区切りで複数のオブジェクトを格納するもの」です。オブジェクトとは、数値や文字列、リスト(配列)、辞書のようなプログラムが処理したりするデータ全般のこと。下記にリスト(配列)の例を挙げます。
- [1, 2, 3, 4]
- [‘A’, ‘B’, ‘C’]
このように、リストは[ ]で表現され、[ ]の中に要素を書き込みます。特に要素が無い場合は、何も書き込まず、空のリスト(配列)とすることもできます。それでは、IDLEに下記のように入力して、空のリストを初期化しましょう。
これでlstという名前をつけた空のリスト(配列)を初期化することができました。IDLEにlstと打ち込めば、[]と表示されるはずです。
プログラミングしていく上でこのように空のリスト(配列)を初期化する機会はたくさんあります。特に多いのは繰り返しループで作成した要素を格納するためのリスト(配列)で、簡単な例だと下記のようなものになります。
lst.append(i)
これは、0から9までの数字をリスト(配列)に格納するプログラムです。IDLEでlstと打ち込むと[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]と表示され、for文で作られた要素が格納されていることがわかります。
Pythonではリスト(配列)に数値を入力することで初期化可能
次に、リスト(配列)に数値を入力して初期化する方法について解説しましょう。数値とは、-1, 0, 1, 2.5, 100といった整数、小数、負の数などです。
ここで注意点は 1 は数値ですが、 ‘1’ は数値ではなく文字だということです。IDLEで 1 + 2と打ち込むと、3という解答が返ってきますよね。しかし、’1’ + ‘2’ と打ち込むと、’12’という結果になります。これは、文字同士を足し算した結果は、文字の結合を表すためです。
このように、プログラミングを進めると数値だと思っていたものが実は文字だったということが原因で動かなくなることが多々あるので気をつけてください。
それでは、Pythonではリスト(配列)に数値を入力して初期化してみましょう。
これで、リスト(配列)の初期化ができました。もちろん、リスト(配列)内の数値はいくつでも良いのでいろいろな数値や個数でリスト(配列)の初期化を試しましょう。
Pythonではリスト(配列)に文字列を入力して初期化も可能)
次は、リスト(配列)に文字列を入力して初期化しましょう。
これで初期化ができました。数値を入力して初期化する場合とそれほど変わりませんよね。
それではもうひとつ、リスト(配列)に文字列を入力して初期化する方法をお伝えします。IDLEにlst = list(‘apple’)と打ち込んでください。これでlstは[‘a’, ‘p’, ‘p’, ‘l’, ‘e’]というリスト(配列)に初期化されました。
list()というのは、()内のオブジェクトをリスト化する関数です。今回は文字列を入れたので、文字列が一文字ごとに分解され、リスト(配列)になりました。もちろん、list()は文字列以外にも適用することができます。ぜひ、いろいろなオブジェクトを入力し、どんなことができるのか、どんなことができずにエラーが返ってくるのか実験しましょう。
リスト(配列)に変数やリストを入力して初期化も可能
リストは複数のオブジェクトを格納するものです。変数やリストもオブジェクトなので、これらを格納することもできます。下記のようにIDLEに打ち込んでみましょう。
lst1 = [num] lst2 = [[1, 2, 3], [4, 5, 6]]
lst1, lst2を確認すると、初期化が行われるでしょう。変数を格納する際の注意点は、初期化されていない変数はリスト(配列)に格納できないということです。lst = [test] のように初期化されていないtestという変数を格納しようとしてもエラーとなります。
また、lst内に変数を格納したとしても、変数の変化はlstに反映されないので注意です。以下のようにしても、最終的なlstは[1]のままで、[2]にはなりません。
lst = [num] num = 2
以上のような点に気をつけて、リストの初期化を行って下さい。
リスト内包表記による初期化
最後は、リスト内包表記による初期化を行います。リスト内包表記というのは、リストに含まれる要素をfor文を使って表現する方法です。Python独特の表記方法なので、プログラミング経験者でも見慣れないかもしれません。
それではまず、どのような書き方をするのか下記の例を見て下さい。
x for x in range(10)という部分がリスト内包表記という書き方です。range(10)というのは、0以上10未満の整数つまり0から9の数値を順番に渡す関数です。なので、for x in range(10)という部分の意味はxに0から9までの数値を順番にxに代入するという意味です。そして、x for x in range(10)という書き方になると、0から9までのすべての数値と解釈します。
lst = list(x for x in range(10))はx = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]と同じ意味なのでこんな難しい書き方をする必要はないと感じるかもしれませんが、0から10000までの数値を入力してリスト(配列)を初期化したい場合、リスト内包表記の便利さが感じられるはずです。
また、lst = list(x for x in range(10000))は下記のようなプログラムと同じ動作です。
lst.append(x)
ですが、リスト内包表記を使った方が実行速度は格段に速いです。Pythonは読み書きしやすい反面、実行速度が遅いため、実行速度を速められるよう意識してプログラミングできると良いです。
さて、今回はプログラミング初心者向けにPythonのリスト(配列)を初期化する方法について解説しました。まとめると以下のようになります。
- リスト(配列)とは複数のオブジェクトをカンマ区切りで格納するもの
- lst = []と書けば空のリスト(配列)で初期化できる
- 空のリストは繰り返しループの要素を格納するために
- lst = [1, 2, 3]のように書くと数値の入力でリスト(配列)を初期化できる
- 1 は数値、 ‘1’は文字である点に注意
- lst = [‘a’, ‘p’, ’p’, ’l’, ’e’]やlst = list(‘apple’)で文字入力によるリスト(配列)初期化
- リスト(配列)はリスト(配列)や変数でも初期化可能
- リスト(配列)はリスト内包表記を用いた初期化も可能で、実行速度が速い
以上の内容をしっかり理解できれば、Pythonを使ってリスト(配列)を活用することが可能です。わからなかった部分や忘れた部分があれば何度も読み返しながらIDLEで実行しましょう。リスト(配列)をマスターすればPythonで作れるプログラムの幅が大きく広がるに違いありません!
【お知らせ】
当メディア(AIZINE)を運営しているAI(人工知能)/DX(デジタルトランスフォーメーション)開発会社お多福ラボでは「福をふりまく」をミッションに、スピード、提案内容、価格、全てにおいて期待を上回り、徹底的な顧客志向で小規模から大規模ソリューションまで幅広く対応しています。
御社の悩みを強みに変える仕組みづくりのお手伝いを致しますので、ぜひご相談ください。