Pythonにおいて、リスト(List)は非常に重要で柔軟なデータ構造です。リストは複数の要素を順序付けて保持し、変更可能(mutable)な特性を持っています。この記事では、Pythonのリストについて基本から応用までをコード例を交えながら詳しく解説します。
リストの基本
Pythonのリストは、複数の要素を角かっこ []
でくくり、要素と要素の間をカンマ ,
で区切って表現します。以下は基本的なリストの例です。
my_list = [1, 2, 3, 'apple', 'orange', True]
このリストには整数、文字列、ブール値が混在しています。リストは異なるデータ型の要素を同時に格納できます。
リストの要素へのアクセス
リスト内の要素には、インデックスを使用してアクセスします。インデックスは0から始まります。例えば、my_list
の最初の要素にアクセスするには次のようにします。
first_element = my_list[0] print(first_element)
このコードは 1
を出力します。リストの末尾からのインデックスも -1
で指定できます。
last_element = my_list[-1] print(last_element)
このコードは True
を出力します。
リストのスライシング
リストのスライシングを使うと、特定の範囲の要素を取得できます。スライシングは 開始:終了
の形式で指定します。開始のインデックスは含まれ、終了のインデックスは含まれないことに注意してください。
my_slice = my_list[1:4] print(my_slice)
このコードは [2, 3, 'apple']
を出力します。リスト全体をスライスする場合、 [:]
を使用します。
whole_list = my_list[:]
print(whole_list)
このコードは [1, 2, 3, 'apple', 'orange', True]
を出力します。
リストの変更と追加
リストは変更可能なデータ構造です。特定の要素に新しい値を代入したり、append()
メソッドを使用して末尾に要素を追加したりできます。
my_list[1] = 'banana' print(my_list)
このコードは [1, 'banana', 3, 'apple', 'orange', True]
を出力します。
my_list.append('grape') print(my_list)
このコードは末尾に 'grape'
を追加し、[1, 'banana', 3, 'apple', 'orange', True, 'grape']
を出力します。
リストの削除
リストから要素を削除するには、remove()
メソッドや del
ステートメントを使用します。
my_list.remove('apple') print(my_list)
このコードは 'apple'
を削除し、[1, 'banana', 3, 'orange', True, 'grape']
を出力します。
del my_list[2] print(my_list)
このコードはインデックスが 2
の要素を削除し、[1, 'banana', 'orange', True, 'grape']
を出力します。
リストの結合
+
演算子を使用するか、extend()
メソッドを利用して複数のリストを結合できます。
list1 = [1, 2, 3] list2 = ['apple', 'orange'] combined_list = list1 + list2 print(combined_list)
このコードは [1, 2, 3, 'apple', 'orange']
を出力します。
list1.extend(list2)
print(list1)
このコードも同じく [1, 2, 3, 'apple', 'orange']
を出力します。
リストのコピー
リストをコピーする際には、浅いコピーと深いコピーの2つのアプローチがあります。
浅いコピー
original_list = [1, 2, 3, ['apple', 'orange']] shallow_copy = original_list.copy() shallow_copy[3][0] = 'banana' print(original_list)
このコードは [1, 2, 3, ['banana', 'orange']]
を出力します。リスト内のリストは同じオブジェクトを共有しているため、一方を変更するともう一方も影響を受けます。
深いコピー
import copy original_list = [1, 2, 3, ['apple', 'orange']] deep_copy = copy.deepcopy(original_list) deep_copy[3][0] = 'banana' print(original_list)
このコードは [1, 2, 3, ['apple', 'orange']]
を出力します。copy.deepcopy()
を使用することで、元のリストとコピーが別々のオブジェクトを参照するため、一方を変更してももう一方には影響を与えません。
リストの内包表記
リスト内包表記は、簡潔で効率的に新しいリストを生成する方法です。
squared_numbers = [x**2 for x in range(5)] print(squared_numbers)
このコードは [0, 1, 4, 9, 16]
を出
力します。range(5)
で0から4までの整数が生成され、それぞれの要素を2乗して新しいリストが作成されています。
リストのソート
リストをソートするには sort()
メソッドを使用できます。
numbers = [5, 2, 8, 1, 6] numbers.sort() print(numbers)
このコードは [1, 2, 5, 6, 8]
を出力します。リスト内の要素が昇順にソートされます。降順でソートする場合は sort(reverse=True)
とします。
結言
Pythonのリストは柔軟で強力なデータ構造であり、様々な操作が可能です。リストを使いこなすことで、データの保持や処理が効率的かつ読みやすくなります。基本的な操作から応用的なテクニックまで、リストの使い方をマスターすることはPythonプログラミングにおいて重要です。是非、実際にコードを書きながら学んでみてください。