Pythonのリストは非常に柔軟で強力なデータ構造であり、初学者から経験豊富な開発者まで、幅広いユーザーに利用されています。
このブログでは、Pythonリストの基本的な概念から、実用的な使い方までを網羅しています。
1. リストの基本理解
1-1. 基本的な作成方法
リストは、プログラミングにおいて重要なデータ構造の一つです。
リストを作成するには、まず要素を[]
(角括弧)の中に置きます。例えば、以下のように記述します。
my_list = [1, 2, 3, 4, 5]
print(my_list)
【出力結果】
[1, 2, 3, 4, 5]
1-2. 要素の追加と削除の手順
append()メソッドで要素の追加
リストに新しい要素を追加するにはappend()
メソッドを使用します。
例えば、以下のように記述すると、my_list
に6
が追加されます。
my_list.append(6)
print(my_list)
【出力結果】
[1, 2, 3, 4, 5, 6]
remove()メソッドで要素の削除
要素を削除するにはremove()
メソッドやpop()
メソッドを使います。
my_list.remove(1)
と記述すると、my_list
から1
が削除されます。
my_list.remove(1)
print(my_list)
【出力結果】
[2, 3, 4, 5, 6]
また、my_list.pop(2)
と記述すると、インデックス2
の要素が削除されます。
my_list.pop(2)
print(my_list)
【出力結果】
[2, 3, 5, 6]
2. removeとpopの違いは?
2-1. remove() メソッド
remove
とpop
はPythonのリストから要素を削除するために使われるメソッドですが、動作と使用方法が異なります。
remove()
メソッドの場合は、リストから指定された値を削除します。
引数には削除したい要素の値を指定します。
リスト内で指定された値が見つかった、最初の要素を削除します。
指定された値がリスト内に存在しない場合、ValueError
が発生します。
my_list = [1, 2, 3, 4, 5]
my_list.remove(3)
print(my_list)
【出力結果】
[1, 2, 4, 5]
2-2. pop() メソッド
pop()
メソッドは、リストから指定されたインデックスの要素を削除し、その要素を返します。
引数には削除したい要素のインデックスを指定します。
インデックスを指定しない場合は、最後の要素が削除されます。
指定されたインデックスが範囲外の場合、IndexError
が発生します。
my_list = [1, 2, 3, 4, 5]
removed_element = my_list.pop(2)
print(removed_element)
【出力結果】
3
pop(2)は3番目の要素を指定しているので、3が削除されました。
↓は、変数my_listを表示させると、3が削除されているのがわかります。
print(my_list)
【出力結果】
[1, 2, 4, 5]
これらの違いにより、remove
は要素の値を知っている場合に、pop
は要素のインデックスを知っている場合に適しています。
また、pop
メソッドは削除された要素を返すので、その要素を後で使用する場合に便利です。
2-3. インデックス(添え字)について
インデックスは、リストの中で各アイテムが何番目に位置しているかを示す番号です。番号は0から始まります。
例えば、['apple', 'banana', 'cherry']
というリストがあるとき、’apple’は0番目、’banana’は1番目、’cherry’は2番目になります。
my_list = ['apple', 'banana', 'cherry']
# 左から 0,1,2 という並び
インデックスを使って、リストの中の特定のアイテムを取り出したり変更したりできます。
3. リストのソートと検索のテクニック
3-1. sort()メソッド
リスト内の要素をソートするにはsort()
メソッドを使用します。
my_list.sort()
と記述すると、my_list
は昇順(値が小さい順)にソートされます。
my_list = [1, 9, 3, 4, 2]
my_list.sort()
print(my_list)
【出力結果】
[1, 2, 3, 4, 9]
降順にソートする場合は、my_list.sort(reverse=True)
と記述します。
my_list.sort(reverse=True)
print(my_list)
【出力結果】
[9, 4, 3, 2, 1]
3-2. index()メソッド
リストから特定の要素を検索するにはindex()
メソッドを使用します。
my_list.index(3)
と記述すると、3
番目のインデックスが返されます。
index_3 = my_list.index(3)
print(index_3)
【出力結果】
2
↑さっきの降順ソートから操作を続けた場合、表示結果はこのようになります。
4. リストの活用方法
4-1. リスト内包表記の利用
リスト内包表記は、Pythonの強力な機能の一つで、簡潔にリストを生成したり操作したりすることができます。
例えば、各要素を2倍にする新しいリストを作成するコードは以下のようになります。
original_list = [1, 2, 3, 4, 5]
doubled_list = [x * 2 for x in original_list]
print(doubled_list)
【出力結果】
[2, 4, 6, 8, 10]
↑の記述、 [x * 2 for x in original_list]
は、Pythonのリスト内包表記(List Comprehension)と呼ばれる機能を使っています。
リスト内包表記は、既存のリストから新しいリストを生成する簡潔で効率的な方法を提供します。
for x in original_list:
この部分は、original_list
の各要素に対してループを実行します。ループの各イテレーションで、x
はoriginal_list
の次の要素になります。x * 2
この部分は、x
の値を2倍にします。x
はoriginal_list
の各要素を参照します。[ ]
(角括弧)
この部分は新しいリストを作成します。リスト内包表記は新しいリストを生成し、そのリストに結果を格納します。
コードを実行すると、original_list
の各要素が2倍になった新しいリスト[2, 4, 6, 8, 10]
が生成されます。
original_list = [1, 2, 3, 4, 5]
doubled_list = [x * 2 for x in original_list]
print(doubled_list)
【出力結果】
[2, 4, 6, 8, 10]
このように、リスト内包表記は、既存のリストから新しいリストを簡潔かつ効率的に生成することができます。
5. リストのフィルタリングとマッピング
5-1. リストのフィルタリング
リストのフィルタリングは、特定の条件を満たす要素だけを取り出して新しいリストを作成する操作です。
以下のコードは、original_list
から2より大きい要素だけを取り出して、新しいリストfiltered_list
を作成します。
original_list = [1, 2, 3, 4, 5]
filtered_list = [x for x in original_list if x > 2]
print(filtered_list)
【表示結果】
[3, 4, 5]
5-2. リストのマッピング
リストのマッピングは、リストの各要素に何らかの操作を適用して新しいリストを作成する操作です。
以下のコードは、original_list
の各要素を2倍にして、新しいリストmapped_list
を作成します。
original_list = [1, 2, 3, 4, 5]
mapped_list = [x * 2 for x in original_list]
print(mapped_list)
【表示結果】
[2, 4, 6, 8, 10]
6. リストとラムダ関数の組み合わせ
6-1. ラムダ関数とは
ラムダ関数は、シンプルで一行で書ける小さな関数を作る時に使います。
# ラムダ関数を使って、リストの各数字を二乗する
original_list = [1, 2, 3, 4, 5]
squared_list = list(map(lambda x: x * x, original_list))
print(squared_list)
【出力結果】
[1, 4, 9, 16, 25]
このコードでは、「lambda x: x * x
」の部分がラムダ関数です。
lambda x: x * x
の部分は、小さな関数を作っています。
この関数は、数字を受け取り、その数字を自分自身で掛け算し、その結果を出力します。
例えば、
- 数字の3をこの関数に与えると、
3 * 3 = 9
を計算し、9
を出力。 - 4なら、
4 * 4 = 16
を計算し、16
を出力。