リスト

リストとは

リストは複数の値をまとめて扱うための機能。多言語の配列に当たる。リストは[]を使って作成する。複数の値を代入する場合は[]内に,区切りで記述。リストはどのような型の値も代入することができ混在可能、値が重複していても問題無い。

リスト = [要素1, 要素2, 要素3, ... ]
numbers = [1, 2, 3, 4, 5]
colors = ["red", "blue", "green"]
mix = [1, "red"]
print(numbers)
[1, 2, 3, 4, 5]
print(colors)
['red', 'blue', 'green']
print(mix)
[1, 'red']

リストには変数も代入できる。リストに変数が代入された時、リストに中身がコピーされるため、コピー元を書き換えてもコピー先に影響はなく逆も然り。

a = 1
b = 2
c = 3
list = [a, b, c]
print(list)
[1, 2, 3]
a = 100
print(list)
[1, 2, 3] # リストのa部分は1のまま

リストが長く読みづらくなる場合、改行表記することができる。下のコードはファイルに書く前提のコード。実行すると改行や空白が無いリストが出力される。

colors = [
    "red", "blue", "green", "yellow", "black",
    "white", "brown", "orange", "gray",
    "purple", "gold", "silver", "navy"
]

同じ要素を繰り返すリストを作る

同じ要素を繰り返すリストは*演算子で作成する。文字列”red”を5個保持するリストを作る場合、以下の簡略に実現できる。これは数値や論理値も同じ。

colors = ["red"] * 5
print(colors)
["red", "red", "red", "red", "red"]

既に要素を含むリストに*演算子を適用すると、その要素の並びが繰り返されたリストが作成される。

list = [1, 2, 3]
print(list * 3)
[1, 2, 3, 1, 2, 3, 1, 2, 3] # 1, 2, 3を3回繰り返す

文字列をリスト化

list()関数を使うと他の型の値をリスト化することができる。例えばlist()関数の引数に文字列を渡すと、1文字単位で要素に分割したリストが作られる。

list = list("あいうえお")
print(list)
['あ', 'い', 'う', 'え', 'お']

他にも1文字づつではなく単語などで分割するsplit()関数などがある。

空のリストを作る

空のリストは[]とlist()を使う2通りの方法がある。

list = []
print(list)
[]
list2 = list()
print(list2)
[]

リストの要素の操作

リストに含まれる値をインデックス(添字)によって管理している。インデックスは先頭から0、1、2、…と連番で続き、後ろからは逆順に-1、-2、-3、…と数える。操作した値にはこのインデックスを指定して行う。

後で表を入れる

colors = ["red", "blue", "green"]
print(colors[1]) # 2番目の要素を参照
'bleu'
colors[0] = "black" # 1番目の要素に文字列"black"を代入
print(colors)
['black', 'blue', 'green']

多次元リスト

リストはリスト内にリストを代入することができる。これを多次元リスト(多重リスト)と呼ぶ。リストの中にリストが入ったリストが2次元リスト。

リスト名 = [
    [要素1, 要素2, 要素3],
    [要素4, 要素5, 要素6],
    ...,
]
# 2次元リストの宣言
list = [
[1, 2, 3, 4, 5],
["red", "blue", "green", "black", "white"]
]
print(list)
# 実行結果
[[1, 2, 3, 4, 5], ['red', 'blue', 'green', 'black', 'white']]

2次元リストの値の指定はリスト名[添字][添字]でアクセスする。

# 2次元リストにアクセス
print(list[0][4])

# 実行結果
white

更にもう1つネストしたリストが3次元リスト。

リスト名 = [
    [
        [要素1, 要素2, 要素3],
        [要素4, 要素5, 要素6]
    ],
    [
        [要素7, 要素8, 要素9],
        [要素10, 要素11, 要素12]
    ],
    ...,]
list = [
    [
        [1, 2, 3],
        [4, 5, 6]
    ],
[
        [7, 8, 9],
        [10, 11, 12]
    ]
]
print(list)

# 実行結果
[[[1, 2, 3], [4, 5, 6]], [[7, 8, 9], [10, 11, 12]]]

3次元リストの値の指定はリスト名[添字][添字][添字]でアクセスする。

# 3次元リストにアクセス
print(list[1][0][2])

# 実行結果
9

普通のリストが一直線上に箱が横並び、2次元リストがエクセルのような縦横の表、3次元リストが表に奥行きを持たせたルービックキューブ状と考えるとよい。

リストの要素数をlen関数で数える

組み込み関数のlen()は引数にリストを渡すと、その要素数を返す。

len(リスト)
list = ["yamada", "sato", "suzuki"]
print(len(list))

# 実行結果
3

len()の多次元リストでの使い方。

# 2次元リストの場合
list = [
    [1, 2, 3],
    [1, 2, 3, 4, 5]
]
print(len(list2))
# 実行結果
3
print(len(list2[1])
# 実行結果
5
# 3次元リストの場合
list = [
    [
        [1, 2, 3],
        [4, 5]
    ],
    [
        [6, 7, 8, 9],
        [10],
        [11, 12]
    ]
]
print(len(list))
# 実行結果
2
print(len(list[1]))
# 実行結果
3
print(len(list[1][0]))
# 実行結果
4

複数のリストをまとめる

zip()関数を使うと複数のリストを1つのリストにまとめる事ができる。この時、各リストの要素は行列の列(縦)の値をタプルにまとめた値になる。

a = [1, 2, 3]
b = [4, 5, 6]
c = [7, 8, 9]
zip_obj = zip(a, b, c)    # zipオブジェクト化
abc = list(zip_obj)    # list()でリストに変換
print(abc)
# 実行結果
[(1, 4, 7), (2, 5, 8), (3, 6, 9)]

pythonのlistをzipでまとめた時の図

コメント

タイトルとURLをコピーしました