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