(最終更新月:2022年12月)
✔このような方へ向けて書かれた記事となります
「Pythonの配列(list)をマスターしたい」
「Pythonの配列操作はどうやってやるの?」
「実際の具体例がないとわかりづらい、、、」
✔当記事を通じてお伝えすること
- 配列の作り方|宣言・初期化について
- 配列の操作方法
- 配列の使い方
当記事では、配列(List)の作り方や操作方法はもちろん、それぞれ具体的な実例まで合わせてご紹介します。
ぜひ最後までご覧ください。
Pythonの配列(List)とは?
Pythonの配列(list)とは、複数のデータが集まったデータ型です。
ほかにも複数のデータが集まったものはありますが、配列の特徴は以下のとおり。
- 要素に順番がある
- 要素の追加や削除、書き換えが可能
- 備わっているメソッドがある
配列のデータ型を調べると以下のようになります。
#sample_listが配列
print(type(sample_list))
<class 'list'>
Pythonで配列を作る方法|宣言・初期化
Pythonoの配列を作る方法をお伝えします。
以下の3通りあるからです。
- 空の配列を作る
- 要素入りの配列を作る
- ほかのデータ型から返還する
空のリストを作る方法2選
空のリストを作るには以下の2通りあります。
- []
- listメソッド
どちらでも好きな方をお使いください。
#[]を使う
empty_list = []
print(empty_list)
[]
#listメソッドを使う
empty_list2 = list()
print(empty_list2)
[]
要素入りのリストを作る方法
要素入りのメソッドを使うには、以下のとおり。
full_list = [1,2,3]
print(full_list)
[1, 2, 3]
ほかのデータ型から変換する方法
ほかのデータ型を活用して配列を作る方法は以下の2つ。
- listメソッド
- splitメソッド
listメソッド
listメソッドを使うと以下のとおり。
#文字列をひとつずつリストの要素にする
>>> sample_str = "サンプル文字列"
>>> list(sample_str)
['サ', 'ン', 'プ', 'ル', '文', '字', '列']
#タプルを配列にする
>>> sample_tuple = ("a","b","c")
>>> list(sample_tuple)
['a', 'b', 'c']
#辞書を配列にする
>>> sample_dict = {"age":38,"name":"裕"}
>>> list(sample_dict)
['age', 'name']
#辞書の値を配列にしたいとき
>>> list(sample_dict.values()) #辞書型のvaluesメソッドを使う
[38, '裕']
splitメソッド
splitメソッドを使うと、任意の場所で文字列を分けられます。
#一語として、配列化する
>>> sample_str.split()
['サンプル文字列']
#「ル」で区切る
>>> sample_str.split("ル")
['サンプ', '文字列']
Pythonの配列操作でできること一覧
以下に当記事でご紹介しているPythonの配列(list)でできることを一覧化しました。
具体例などはリンクをたどって、説明している見出しへ飛んでください。
できること | メソッド・演算子等 | 概要 |
---|---|---|
要素の追加 | append | 最後尾に追加 |
要素の追加 | insert | 位置を指定して追加 |
要素の削除 | del | 位置を指定して削除 |
要素の削除 | remove | 値を指定して削除 |
要素の削除 | pop | 値を取り出しながら削除 |
要素の削除 | clear | 要素をすべて削除 |
要素同士の結合 | extend | ひとつめのリストに2つめのリストを追加 |
要素同士の結合 | +=演算子 | ひとつめのリストに2つめのリストを追加 |
要素同士の結合 | +演算子 | 結合された新たなリストを作成 |
要素の検索 | in | あるかどうかを調べる |
要素の検索 | index | オフセットを調べる |
要素の検索 | count | 数を数える |
要素の並び替え | sort | 順番に並び替える |
要素の並び替え | reverse | 逆順に並び替える |
要素の並び替え | sorted | 並び替えた新しいリストを作る |
最大値を求める | max | 最大値を求める |
最小値を求める | min | 最小値を求める |
要素を取り出す | オフセット | ひとつずつ取り出す |
要素を取り出す | スライス | 複数取り出す |
要素の書き換え | オフセット | 位置を指定して書き換え |
要素の書き換え | for文 | 一括もしくは条件付きで書き換える |
要素の書き換え | 内包表記 | 一括もしくは条件付きで書き換える |
ほかの要素へ変換 | join | 要素同士を繋げて文字列に変換する |
ほかの要素へ変換 | tuple | リストをタプルに変換する |
【Pythonの配列操作】要素を追加する
要素を追加する主な方法は2つ。
- append
- insert
ただしメソッドを使う以外の追加方法は、以下でも詳しくご説明しています。
append:最後尾に追加
リストの末尾へ追加する方法です
リスト.append(追加したい要素)
lang_list = ["Python", "JavaScript", "Go", "PHP"]
lang_list.append("Swift")
print(lang_list)
['Python', 'JavaScript', 'Go', 'PHP', 'Swift']
insert:追加位置を指定
リストの末尾へ追加する方法です
リスト.append(追加したい要素)
lang_list = ["Python", "JavaScript", "Go", "PHP"]
lang_list.insert(1, "html")
print(lang_list)
['Python', 'html', 'JavaScript', 'Go', 'PHP']
【Pythonの配列操作】要素を削除する
要素を削除する方法は主に4つ。
- del
- remove
- pop
- clear
del:オフセットを指定
オフセットを指定する方法です
del リスト[オフセット]
lang_list = ["Python", "JavaScript", "Go", "PHP"]
del lang_list[-1]
print(lang_list)
['Python', 'JavaScript', 'Go']
remove:値を直接指定
値を指定し削除する方法です
リスト.remove(削除したい値)
lang_list = ["Python", "JavaScript", "Go", "PHP"]
lang_list.remove("Go")
print(lang_list)
['Python', 'JavaScript', 'PHP']
pop:要素を取り出しながら削除
オフセット指定した要素を削除しつつ、取り出します
リスト.pop(オフセット)
lang_list = ["Python", "JavaScript", "Go", "PHP"]
deleted = lang_list.pop(-1)
print(deleted)
'PHP'
print(lang_list)
['Python', 'JavaScript', 'Go']
clear:すべて消去
clearメソッドはすべて消去します。
リスト.clear()
lang_list = ["Python", "JavaScript", "Go", "PHP"]
lang_list.clear()
print(lang_list)
[]
【Pythonの配列操作】配列同士を結合する
配列同士を結合する方法は主に以下の3つです。
- extend
- +演算子
- +=演算子
extend:ひとつめのリストに2つめのリストを追加
リスト1.extend(リスト2)
list1 = ["programming", "blog"]
list2 = ["sales", "reading", "studying"]
list1.extend(list2)
print(list1)
['programming', 'blog', 'sales', 'reading', 'studying']
+=演算子:ひとつめのリストに2つめのリストを追加
リスト1 += リスト2
list1 = ["programming", "blog"]
list2 = ["sales", "reading", "studying"]
list1 += list2
print(list1)
['list', 'tuple', 'dictionary', 'sales', 'reading', 'studying']
+演算子:結合された新たなリストを作成
リスト1 + リスト2
list1 = ["programming", "blog"]
list2 = ["sales", "reading", "studying"]
list3 = list1 + list2
print(list3)
['programming', 'blog', 'sales', 'reading', 'studying']
【Pythonの配列操作】要素の検索をする
要素を検索したり、調べたりするには以下の3つが使えます。
- in演算子
- index
- count
in演算子:あるかどうかを調べる
in演算子で調べると、ある場合はTrue、ない場合はFalseが返ります。
調べたい要素 in リスト
>>> lang_list = ["Python", "JavaScript", "Go", "PHP"]
>>> "Python" in lang_list
True
indexメソッド:オフセットを調べる
indexを使うと、要素のオフセット(位置)が確認できます。
リスト.index(要素)
>>> lang_list = ["Python", "JavaScript", "Go", "PHP"]
>>> lang_list.index("Go")
2
countメソッド:数を数える
countでは、調べたい要素がいくつ入っているかを数えます。
リスト.count(調べたい要素)
>>> random_nums = [1,3,5,2,1,4,2,3,2,1,5,2]
>>> random_nums.count(1)
3
【Pythonの配列操作】要素を並び替える
要素を並び替える方法は2とおりです。
- sort
- reverse
- sorted
sortメソッド:順番に並び替える
昇順に並び替えます。
リスト.sort()
random_nums = [1,3,5,2,1,4,2,3,2,1,5,2]
random_nums.sort()
print(random_nums)
[1, 1, 1, 2, 2, 2, 2, 3, 3, 4, 5, 5]
reverseメソッド:逆順に並び替える
逆順位並び替えます。
リスト.sort()
random_nums = [1,3,5,2,1,4,2,3,2,1,5,2]
random_nums.reverse()
random_nums
[2, 5, 1, 2, 3, 2, 4, 1, 2, 5, 3, 1]
sortedメソッド:並び替えた新しいリストを作る
sortedメソッドでは、新しいメソッドが作られます。
sorted(リスト)
random_nums = [1,3,5,2,1,4,2,3,2,1,5,2]
new_list = sorted(random_nums)
print(new_list)
[1, 1, 1, 2, 2, 2, 2, 3, 3, 4, 5, 5]
【Pythonの配列操作】最大・最小値を求める
最大・最小値をそれぞれ求められます。
- max
- min
max関数:最大値を求める
max(リスト)
random_nums = [1,3,5,2,1,4,2,3,2,1,5,2]
print(max(random_nums))
5
min関数:最小値を求める
min(リスト)
random_nums = [1,3,5,2,1,4,2,3,2,1,5,2]
print(min(random_nums))
1
【Pythonの配列操作】要素を取り出す
要素を取り出す方法はふたつ。
- オフセット
- スライス
オフセット:ひとつ取り出す
リスト[オフセット]
lang_list = ["Python", "JavaScript", "Go", "PHP"]
print(lang_list[0])
'Python'
オフセットとは、リスト内での左からの距離(要素の順番)を表します
「距離」なので、一番左側が「0」になります!
スライス:複数取り出す
オフセットを応用して、まとめてリストから取り出します
リスト[スタート位置:終わり位置:何個置きに]
lang_list = ["Python", "JavaScript", "Go", "PHP"]
print(lang_list[2:4])
['Go', 'PHP']
#最初のオフセットを指定しない(0になります)
print(lang_list[:4])
['Python', 'JavaScript', 'Go', 'PHP']
#2つ置きに要素を取り出します
print(lang_list[::2])
['Python', 'Go']
【Pythonの配列操作】要素を書き換える
要素を書き換える方法は以下の3つがあります。
- オフセット
- for文とenumerate
- 内包表記
オフセット:ひとつだけ書き換える
リスト[オフセット] = 新しい値
lang_list = ["Python", "JavaScript", "Go", "PHP"]
lang_list[-1] = "C++"
print(lang_list)
['Python', 'JavaScript', "Go", 'C++']
for文とenumerate:一括もしくは条件付きで書き換える
for文で一括で入れ替えたり、条件付きで書き換えられます。
num_list = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
for index, num in enumerate(num_list):
if num%2==0:
num_list[index] = "偶数"
print(num_list)
['偶数', 1, '偶数', 3, '偶数', 5, '偶数', 7, '偶数', 9]
内包表記:一括もしくは条件付きで書き換える
内包表記でも条件付きや一括で入れ替えが可能です。
num_list = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
new_list = [i**2 for i in num_list if i%2==1]
print(new_list)
[1, 9, 25, 49, 81]
#奇数だけ取り出して、2乗
【Pythonの配列操作】ほかの要素へ変換する
joinメソッド:要素同士を繋げて文字列に変換する
(要素同士をつなげる文字).join(リスト)
lang_list = ["Python", "JavaScript", "Go", "PHP"]
lang_str = (":").join(lang_list)
print(lang_str)
'Python:JavaScript:Go:PHP'
tupleメソッド:リストをタプルに変換する
lang_list = ["Python", "JavaScript", "Go", "PHP"]
print(tuple(lang_list))
('Python', 'JavaScript', 'Go', 'PHP')
まとめ:Pythonの配列でできることはたくさんある
当記事でご紹介した方法は以下のとおり。
できること | メソッド・演算子等 | 概要 |
---|---|---|
要素の追加 | append | 最後尾に追加 |
要素の追加 | insert | 位置を指定して追加 |
要素の削除 | del | 位置を指定して削除 |
要素の削除 | remove | 値を指定して削除 |
要素の削除 | pop | 値を取り出しながら削除 |
要素の削除 | clear | 要素をすべて削除 |
要素同士の結合 | extend | ひとつめのリストに2つめのリストを追加 |
要素同士の結合 | +=演算子 | ひとつめのリストに2つめのリストを追加 |
要素同士の結合 | +演算子 | 結合された新たなリストを作成 |
要素の検索 | in | あるかどうかを調べる |
要素の検索 | index | オフセットを調べる |
要素の検索 | count | 数を数える |
要素の並び替え | sort | 順番に並び替える |
要素の並び替え | reverse | 逆順に並び替える |
要素の並び替え | sorted | 並び替えた新しいリストを作る |
最大値を求める | max | 最大値を求める |
最小値を求める | min | 最小値を求める |
要素を取り出す | オフセット | ひとつずつ取り出す |
要素を取り出す | スライス | 複数取り出す |
要素の書き換え | オフセット | 位置を指定して書き換え |
要素の書き換え | for文 | 一括もしくは条件付きで書き換える |
要素の書き換え | 内包表記 | 一括もしくは条件付きで書き換える |
ほかの要素へ変換 | join | 要素同士を繋げて文字列に変換する |
ほかの要素へ変換 | tuple | リストをタプルに変換する |
Pythonの配列ではいろいろなことができます。
わからなくなったらいつでも当記事に戻ってきてください。