Python
2021.09.15
Pythonのリスト(list)の基本的な操作方法やメソッドの一覧をまるっと解説!
2023.11.18
Python list


1.Pythonとは?


Python(「パイソン」と読みます)はAIやデータ分析が得意で初心も学習しやすい特徴があり、人気の高いプログラミング言語です。もともとは機械学習の分野でよく使われていました。ただ汎用言語なので、Webアプリケーションの開発、RPA、画像解析など幅広い分野で活用されています。

Pythonを使用する開発現場も多くなっています。なぜPythonは学習しやすいのでしょうか?それは他の言語に比べ記述がシンプルで、覚えることも比較的少なく、プログラム全体の構造も見通し良くできるからです。


2.Pythonにおける「リスト」とは?


Pythonにおける「リスト」とは、データを一直線にまとめたものです。

a = [1, 2, 4]

このようにデータをまとめることで、複数のデータにaという変数名でアクセスできます。

リストは要素の追加や削除ができますし、要素の値を変えることもできます。また、要素のデータ型は混在していても構いません。リストの要素として更にリストを持たせることもできます。

要素にはインデックスでアクセスします。インデックスとは並び順のことです。インデックスは0から始まるので注意してください。

上記のaなら

a[0] → 1

a[1] → 2

a[2] → 4

です。

リストの長さを超えたインデックスを指定するとエラーになります。非常にデータが扱いやすくなり、プログラミングしやすくなります。

なお、他には、要素の値を変えられない「タプル」、インデックスではなく文字列でアクセスする「辞書」もあります。

3.Pythonでのリストの使い方

①リストを作成する

最も基本的なリストの作り方は、要素を「,」で区切って全て書くことです。

a = [1, 2, 4]

空のリストを作ることもできます。この場合は、後述する方法でリストに要素を追加します。

a = []

②リストの要素をスライスする

「スライス」とは、リストの一部を別なリストとして取り出すことです。

a = [1, 2, 4]
b = a[1:3]
print(b)

出力結果:

[2,4]

スライスは[開始位置:終了位置]で指定します。ただし、終了位置の要素は取り出されません。終了位置-1までの要素が取り出されます。位置は最後の要素からの位置で指定することもできます。この場合、「-」を付けます。

a = [1, 2, 4]
b = a[1:-1]
print(b)

出力結果:

[2]

開始位置、終了位置は省略できます。すると、最初から指定、最後から指定したことになります。

a = [1, 2, 4]
b = a[1:]
c = a[:1]
print(b)
print(c)

出力結果:

[2,4]
[1]

スライスを実際に使うのは、リストの最後の要素を取り出すとき、最初の要素を除いたリストを取り出すときが多いです。頻出する書き方なので覚えておきましょう。

a = [1, 2, 4]
b = a[-1:]
c = a[1:]
print(b)
print(c)

出力結果:

[4]
[2,4]

③リストへの要素の追加

リストに要素を追加するのはappend()を使います。

a = [1, 2, 4]
a.append(7)
print(a)

出力結果:

[1,2,4,7]

空のリストを作っておいて、処理で取得した値を次々リストに追加する手法はよく使われます。

④リストへの要素の挿入

リストに要素を挿入するのはinsert()を使います。

insert(インデックス,値)



で挿入します。

a = [1, 2, 4]
a.insert(2, 7)
print(a)

出力結果:

[1,2,7,4]

⑤リストの要素の削除

リストの要素の削除方法は3種類あります。まずインデックスで指定して削除する方法。delを使います。

a = [1, 2, 4]
del a[0]
print(a)

出力結果:

[2,4]

次に、インデックスを指定し、その値を取得し、削除するpop()という方法があります。

a = [1, 2, 4]
b = a.pop(0)
print(a)
print(b)

出力結果:

[2,4]
1

pop()でインデックスを指定しないと、末尾の要素の値を取得し、削除します。

a = [1, 2, 4]
b = a.pop()
print(a)
print(b)

出力結果:

[1,2]
4

最後に、値で指定して削除するには、remove()を使います。

a = [1, 2, 4]
a.remove(4)
print(a)

出力結果:

[1,2]

⑥リストの結合

リスト同士を結合するのにはextend()を使います。

a = [1, 2, 4]
b = [5, 7]
a.extend(b)
print(a)

出力結果:

[1,2,4,5,7]

このとき、append()を使うと別なリストが要素として結合されます。挙動が違うので注意してください。リストの要素としてリストを持たせることも可能でしたね。

a = [1, 2, 4]
b = [5, 7]
a.append(b)
print(a)

出力結果:

[1,2,4,[5,7]]

⑦リスト内包表記

内包表記はリストを作成するときの方法です。

例えば、

a = [i**2 for i in range(10)]

と書くと、aは

[0,1,4,9,16,25,36,49,64,81]

になります。

とっつきにくいかもしれませんが、手早く計算させて簡潔なコードにする目的で使われます。内包表記は様々なバリエーションがありますが、あまり込み入ったコードを書くと可読性が下がるので、おすすめしません。この程度に収めておきましょう。

⑧リストの初期化

リストを初期化するにはclear()を使います。clear()すれば空のリストになります。

a = [1, 2, 4]
a.clear()
print(a)

出力結果:

[]

⑨リスト内の検索

リスト内にその値の要素があるかないかは、inを使って検索できます。if文で使います。

a = [1, 2, 4]
if 4 in a:
    print('4がaにありました')
if 7 in a:
    print('7がaにありました')

出力結果:

4がaにありました

not inとすると要素がないことを検索します。

a = [1, 2, 4]
if 4 not in a:
    print('4はaにありません')
if 7 not in a:
    print('7はaにありません')

出力結果:

7はaにありません

⑩リストの要素の並び替え

並び替えのことを「ソート」と呼びます。リストをソートするときはsort()を使います。ただsortとすると昇順にソートされます。

a = [1, 2, 4]
a.sort()
print(a)

出力結果:

[1,2,4]

降順にソートしたいときはreverse=Trueとします。

a = [1, 2, 4]
a.sort(reverse=True)
print(a)

出力結果:

[4,2,1]



4.リスト操作で使用するメソッドの一覧


メソッドとは特定の処理に名前をつけたものです。プログラム中で呼び出すことで、さまざまな処理を実現できます。

①append()

リストに要素を追加します。

a.append(7)

②insert()

リストに要素を挿入します。insert(インデックス,値)と書きます。

a.insert(2, 7)

③pop()

指定したインデックスの要素の値を取得し、その要素をリストから削除します。

a.pop(0)

④remove()

指定した値の要素をリストから削除します。

a.remove(7)

⑤extend()

リスト同士を結合します。

a.extend(b)

⑥clear()

リストを初期化し、空のリストにします。

a.clear()

⑦sort()

リストを昇順または降順(reverse=True)でソートします。

a.sort()
a.sort(reverse=True)

⑧index()

その値の要素のインデックスを調べます。

a = [1, 2, 4]
b = a.index(4)
print(b)

出力結果:

2

⑨len()

リストの長さを取得します。

a = [1, 2, 4]
b = len(a)
print(b)

出力結果:

3

5.Pythonのリストでよくある失敗や注意点


少し深い話をすると、Pythonでは数値や文字列は代入した瞬間に別物になるのですが、リストは代入しても「参照」のコピーが作られるだけで、完全に別物にはなりません。

例えば、

a = [1, 2, 4]
b = a
b[0] = 10

とすると、



a → [10, 2, 4]

b → [10, 2, 4]



と、bだけ変えたはずが元のaまで変わってしまいます。



これはPythonのプログラミング全般に言えることで、数値や文字列以外は、代入しても完全にコピーされるわけではないのです。他のプログラミング言語も同様なのですが、この点は注意が必要です。その性質をうまく生かしたプログラミング技法もあります。クラスの処理でよく使われます。

この点について言及するのはこの記事の範囲を超えるので、そういうことになっている、とだけ覚えておいてください。




この記事をシェア