「配列オブジェクト」は正確なPython用語ではありませんが、大抵のプログラミング言語には「配列」ないし、配列の機能を持つものがあります。
(VRM5以前のVRMスクリプトには配列がなかったわけですけど・・・それはさておき。)
「配列オブジェクト」とは、何らかのオブジェクトが順番に並んでいて、ひとまとめにグループ化されたものです。
特定のi番目の要素を取り出す操作(インデクス)が可能なのが、配列オブジェクトの特徴です。
(本稿はPython3系を前提とします。)
基本のlist型
Pythonの配列オブジェクトの基本はlist型です。四角いカッコ[]で括ります。要素の間はカンマ,で区切ります。
abc = ['い', 'ろ', 'は', 'に', 'ほ', 'へ', 'と']
配列型の基本操作
インデクス
i番目を取り出してくる操作です。abc[3]のように、変数名のうしろに四角いカッコ[]で何番目かを指定します。
先頭を0番目と数えます。これはプログラミング言語によくあるやり方です。
abc[0]
abc[3]
後ろからインデクスすることもできます。一番うしろは[-1]でインデクスします。
abc[-1]
abc[-2]
スライス
配列の中から「i番目からj番目の手前まで」という区間指定をして、一部を切り出すことができます。
abc[0:3]
abc[2:6]
abc[3:4]
abc[3:4]は「3番目から4番目の手前まで」ですから、3番目だけのリストが返ってきます。
先頭と末尾の指定は省略することができます。省略すると、もとのリストの先頭から・もとのリストの末尾までになります。
abc[:4]
abc[4:]
abc[:]
配列の長さを知る
abc = ['い', 'ろ', 'は', 'に', 'ほ', 'へ', 'と']
len(abc)
list型を後から操作する
list型は作った後に要素の追加などの操作ができるのが特徴です。
そういう操作は、list型の「メソッド」を使って行います。オブジェクト名.メソッド名(オプション)の形で使います。
"""リスト型の操作"""
abc = ['い', 'ろ', 'は', 'に', 'ほ', 'へ', 'と']
abc[2] = 'ハ'
abc
abc.append('ち')
i = 0
abc.insert(i, 'ん')
abc.extend(['り', 'ぬ', 'る', 'を'])
ソートもできます。
abc.sort()
元のリストに手を加えることなく、ソート済みのリストを別オブジェクトで受け取りたいときは、組み込み関数のsorted()を使います。
abc = ['ん', 'い', 'ろ', 'ハ', 'に', 'ほ', 'へ', 'と', 'ち', 'り', 'ぬ', 'る', 'を']
abc_2 = sorted(abc)
abc
abc_2
リスト型は、同じものを複数回入れてもいいのです。
abc = ['い', 'ろ', 'は']
abc.extend(['あ', 'い', 'う'])
abc
abc.count('い')
本当はlist型ももっと色々できるのですが、何でもかんでもやればいいというものではありませんので、いったんここまでを紹介しました。
tuple型(タプル)
タプルも配列のひとつで、こちらは丸括弧()で括ります。
タプルがリストと大きく違う点は、一度作ったらその後に編集(要素の差し替え、挟み込み、ソートなど)ができないという点です。
「〇〇ができない」は、裏を返せば「〇〇されることはない」ので、ポカヨケが必要な場面でリストと区別して使います。具体例で見てみましょう。
"""リストとタプルの使い分け"""
xy = (256, 32)
size = (83, 69.7, 91)
pokemon = ('ピカチュウ', 35, 55, 40, 50, 50, 90)
order = ['pizza', 'soda', 'coke', 'pizza', 'banana']
for item in order:
print(f"{item}を作って提供する")