本シリーズでは、Ren'Pyユーザーが知っておきたいPythonの使い方をご紹介しています。
詳細および事前準備などは「00.はじめに」をご確認ください。
今回は「リスト」について説明します。
準備
Ren'Pyのプロジェクトを1つ起動し、「Shift + O」を押してコンソールを開いておいてください。
リストは”値のセット”
01.変数のパートで、次のような説明があったのを覚えていますでしょうか。
今回は、変数に与えられるものとして次の3つを覚えてください。 ・数値(1, -15, 3.14, -28.5...) ・文字列('Hello World!', 'あああ', ...) ・True/False
実は、これらをセットで格納しておくこともできます。
次の式をコンソールに入力してみてください。
list_example = [15, 32, 46, 92, 55, 87, 64]
念のため内容を確認してみましょう。
コンソールに「list_example」と入力してみてください。
[15, 32, 46, 92, 55, 87, 64]と、セットのまま出てきました。
このような、[]の中に数値や文字列がいくつか入ったセットのことを「リスト」といいます。
リストの要素を取り出す
ここからがポイントです。
このセットの、中身だけ取り出すことができます。
コンソールに
list_example[3]
と入力してエンターを押してみてください。
リストの中から、92という数字を取り出すことができました。
注意
[]に入れる数字は0番から始まります。list_example[3]と入力して 92 が返ってくるのはこの為です。
使用例
例えば、キャラクター毎の名前・アルファベット名・カラーコードを次のように変数に入れるとします。
chara_name = ['ノーラ', 'シャイン', 'ユリアナ']
chara_name_e = ['nora', 'shine', 'juliana']
chara_color = ['#ccaaff', '#f0e678', '#ffbb88']
その上で、このように書くと…
i = 0
name_tmp = chara_name[i]
name_e_tmp = chara_name_e[i]
color_tmp = chara_color[i]
iの値を変更するだけで、上記の各変数(xxxx_tmp)にi番目のキャラクターの名前・アルファベット名・カラーコードを与えることができます。(変数名の末尾の「tmp」はtemporary(一時的)の略で、個人的にはよく使います。)
ちなみに自分がゲームを作る場合はキャラクターの並び順を予め決めて変えないようにしています、上記のようなケースを含め何かと便利なので。
現時点ではあまり役立ちそうに見えないかもしれませんが…今後説明するfor文とも相性が良いので、まずはとりあえず使ってみてください。
今回はここまでです。お疲れ様でした。
cf. 関連ページ
もう少しだけ頑張れる!という方は、以下の内容もご覧ください。
補足1:途中までを抜き出す
「:」を使って次のように入力すると配列の指定の部分を抜き出すことができます。
次のコードをコンソールに一行ずつ入力してみてください。
list_example = [15, 32, 46, 92, 55, 87, 64]
list_example[2:5]
list_example[:4]
list_example[2:]
結果は下図のようになるはずです。
[2:5]と入力することで、2番目から、5番目の手前(=4番目)までの要素を抽出することができます。
図にもあるように、「:」の前に数字を入れなければ0番目から抜き出し、「:」の後に数字を入れなければ最後まで取り出します。
おまけ
list_example[-1]
と入力すると、最後の要素を取り出せます(今回であれば64)。
[-2]とすると最後の1つ前の要素(87)が返ってくるはずです。
[2:-2]のように前述の「:」と組み合わせて使うこともできます。
補足2:多次元リスト
リストの中にリストを入れることもできます。
下記のコードをコンソールに入力(コピー&ペースト)してみてください。
chara_info = [ ['ノーラ', 'シャイン', 'ユリアナ'], ['nora', 'shine', 'juliana'], ['#ccaaff', '#f0e678', '#ffbb88']]
まずは
chara_info[0]
と入力してエンターを押してみてください。
['ノーラ', 'シャイン', 'ユリアナ']
が返ってくるはずです。
要素の中の要素は取り出せるのでしょうか。
chara_info[0][0]
と入力しすると、
'ノーラ'
と返ってくるはずです。
[0][0]以外の数字でも試してみてください。
…ところで。
chara_info = [ ['ノーラ', 'シャイン', 'ユリアナ'], ['nora', 'shine', 'juliana'], ['#ccaaff', '#f0e678', '#ffbb88']]
この書き方、非常に見づらいですよね。
もっとスマートに入力する方法を次の回で取り上げますのでご期待ください。