チャポケのブログ

勉強したことをまとめておく。

Python list型

list型の定義、アクセス

list型は、pythonで扱う配列形式のデータ型
任意の型のデータを、list型の配列に入れることが可能。
異なる型のデータを混在させて、1つのlist型に入れることが可能。
list型データにアクセスする場合、最初のデータは0番目として扱う。

# list型の定義
aaa = [1, 2, 3, 4, "東", "南", "西", "北"]

print(aaa[0]) # 0番目のデータにアクセス # 1
print(aaa[3]) # 3番目のデータにアクセス # 4
print(aaa[-1]) # 最後から1番目のデータにアクセス # 北
print(aaa[-2]) # 最後から2番目のデータにアクセス # 西

aaa[2] = 10 # 2番目のデータを書き換え
print(aaa) # [1, 2, 10, 4, '東', '南', '西', '北']

配列サイズの取得、配列データの追加と削除

len()関数で、配列サイズを取得できる。
.append()メソッド, .insert()メソッドで、配列データを追加できる。
.pop()メソッドで、配列データを削除できる。

aaa = ["東", "南", "西", "北"]
print("サイズ=" + str(len(aaa)) + " " + str(aaa))
# サイズ=4 ['東', '南', '西', '北']

# 末尾に追加
aaa.append("白")
print("サイズ=" + str(len(aaa)) + " " + str(aaa))
# サイズ=5 ['東', '南', '西', '北', '白']

# 2番目の手前に追加 ※先頭は0番目
aaa.insert(2, "發")
print("サイズ=" + str(len(aaa)) + " " + str(aaa))
# サイズ=6 ['東', '南', '發', '西', '北', '白']

# 1番目を書き換え
aaa[1] = "中"
print("サイズ=" + str(len(aaa)) + " " + str(aaa))
# サイズ=6 ['東', '中', '發', '西', '北', '白']

# 3番目を削除
aaa.pop(3)
print("サイズ=" + str(len(aaa)) + " " + str(aaa))
# サイズ=5 ['東', '中', '發', '北', '白']

# 末尾を削除
aaa.pop()
print("サイズ=" + str(len(aaa)) + " " + str(aaa))
# サイズ=4 ['東', '中', '發', '北']

list型配列とlist型配列の結合

”+”演算子で、2つの配列を結合。
"+="演算子.extend()メソッドは、同じ効果。

aaa = ["東", "南", "西", "北"]
bbb = ["白", "發", "中"]

# "+"演算子で結合
ccc = aaa + bbb
print(ccc) # ['東', '南', '西', '北', '白', '發', '中']

# "+="演算子で結合
aaa += bbb
print(aaa) # ['東', '南', '西', '北', '白', '發', '中']

# .extend()メソッドで結合 ※"+="演算子と同じ効果
ddd = bbb.extend(["一萬", "二萬", "三萬"])
print(bbb) # ['白', '發', '中', '一萬', '二萬', '三萬']
print(ddd) # None ※.exctend()メソッドの戻り値は、Noneなので注意

2次元配列

list型のデータを配列にしたlist型を作ることにより、2次元配列のデータが作成可能。

# 2次元配列のlist型の定義
aaa = [["一萬", "二萬", "三萬"], ["一筒", "二筒", "三筒"]]

print(aaa[0][0]) # 0行0列のデータにアクセス # 一萬
print(aaa[1][2]) # 1行2列のデータにアクセス # 三筒

スライシング

スライシングとは、次のようにlist型配列の一部分を抽出して、別のlist型配列を作る機能のこと。

aaa = ["東", "南", "西", "北", "白", "發", "中"]

# 2番目から5番目未満を抽出 ※先頭は0番目、5番目は含まない
print(aaa[2:5]) # ['西', '北', '白']

# 2番目以降を抽出
print(aaa[2:]) # ['西', '北', '白', '發', '中']

# 5番目未満を抽出
print(aaa[:5]) # ['東', '南', '西', '北', '白']

# 2番目以降を2個おきに抽出
print(aaa[2::2]) # ['西', '白', '中']

# 最後から逆順に抽出
print(aaa[::-1]) # ['中', '發', '白', '北', '西', '南', '東']

# 逆順抽出で、次は何も抽出しない
print(aaa[2:5:-1]) # []

# 逆順抽出で、5番目から2番目まで ※2番目を含まない
print(aaa[5:2:-1]) # ['發', '白', '北']