Pythonには、複数のデータをまとめて扱うためのデータ構造がいくつかあります。この章では、リストとタプルという2つの基本的なデータ構造を学びます。リストとタプルの作り方、要素へのアクセス方法、要素の追加や削除など、これらのデータ構造を効果的に使いこなす方法を解説します。
ythonのリストは、複数の要素を順序付けて格納するためのデータ構造です。リストは柔軟で使いやすく、Pythonプログラムの多くの部分で使用されます。この章では、リストの作成と基本的な操作方法について説明します。
リストの作成
リストは、角括弧([])で要素を囲むことで作成されます。要素はカンマ(,)で区切ります。リストは異なるデータ型の要素を格納することができます。
例:
numbers = [1, 2, 3, 4, 5]
names = ["Alice", "Bob", "Charlie"]
mixed_list = [42, "Hello", 3.14, True]
空のリストは、空の角括弧([])を使って作成するか、list()関数を使って作成できます。
empty_list1 = []
empty_list2 = list()
リストの要素へのアクセス
リストの要素にアクセスするには、インデックスを使います。インデックスは0から始まります。
例:
names = ["Alice", "Bob", "Charlie"]
print(names[0]) # "Alice"を出力
print(names[1]) # "Bob"を出力
負のインデックスを使用すると、リストの末尾からアクセスできます。
names = ["Alice", "Bob", "Charlie"]
print(names[-1]) # "Charlie"を出力
リストの要素の変更
リストの要素は、インデックスを使って変更できます。
例:
names = ["Alice", "Bob", "Charlie"]
names[1] = "David"
print(names) # ["Alice", "David", "Charlie"]を出力
リストへの要素の追加と削除
リストに要素を追加するには、append()
メソッドを使用します。要素はリストの末尾に追加されます。
例:
names = ["Alice", "Bob", "Charlie"]
names.append("David")
print(names) # ["Alice", "Bob", "Charlie", "David"]を出力
リストから要素を削除するには、del文を使用します。
例:
names = ["Alice", "Bob", "Charlie"]
del names[1]
print(names) # ["Alice", "Charlie"]を出力
リストのスライス
リストの一部分を取り出すには、スライスを使用します。スライスは、コロン(:)を使って開始インデックスと終了インデックスを指定します。終了インデックスは、取り出す範囲に含まれません。
タプルの作成と操作
タプルは、Pythonのデータ構造であり、リストと同様に複数の要素を順序付けて格納します。ただし、タプルはイミュータブル(変更不可)であり、一度作成されると要素の変更や追加、削除ができません。この章では、タプルの作成と基本的な操作方法について説明します。
タプルの作成
タプルは、丸括弧(())で要素を囲むことで作成されます。要素はカンマ(,)で区切ります。タプルもリストと同様に、異なるデータ型の要素を格納することができます。
例:
numbers = (1, 2, 3, 4, 5)
names = ("Alice", "Bob", "Charlie")
mixed_tuple = (42, "Hello", 3.14, True)
空のタプルは、空の丸括弧(())を使って作成するか、tuple()関数を使って作成できます。
empty_tuple1 = ()
empty_tuple2 = tuple()
1つの要素だけを持つタプルを作成する場合、要素の後ろにカンマ(,)を付けて作成します。
single_element_tuple = (42,)
タプルの要素へのアクセス
タプルの要素にアクセスするには、インデックスを使います。インデックスは0から始まります。
例:
names = ("Alice", "Bob", "Charlie")
print(names[0]) # "Alice"を出力
print(names[1]) # "Bob"を出力
負のインデックスを使用すると、タプルの末尾からアクセスできます。
タプルの要素の変更
タプルはイミュータブルなので、要素を変更することはできません。ただし、タプルの中にミュータブルなデータ構造(例えばリスト)がある場合、そのデータ構造の要素は変更可能です。
タプルのスライス
タプルの一部分を取り出すには、スライスを使用します。スライスは、コロン(:)を使って開始インデックスと終了インデックスを指定します。終了インデックスは、取り出す範囲に含まれません。
例:
numbers = (1, 2, 3, 4, 5)
sub_tuple = numbers[1:4]
print(sub_tuple)
# (2, 3, 4)を出力
この例では、numbers
タプルからインデックス1(2)からインデックス3(4)までの要素を取り出し、新しいタプルsub_tuple
を作成しています。
タプルの結合
タプル同士は、+
演算子を使って結合することができます。
例:
tuple1 = (1, 2, 3)
tuple2 = (4, 5, 6)
combined_tuple = tuple1 + tuple2
print(combined_tuple) # (1, 2, 3, 4, 5, 6)を出力
タプルはイミュータブルであり、リストよりもメモリ効率が良い場合があります。一度作成されたデータが変更されることがないことを保証するためにタプルを使用することが推奨されます。タプルは、関数の戻り値や辞書のキーとして使用されることが多いです。タプルを使いこなすことで、プログラムの効率や安全性を向上させることができます。
繰り返し処理と組み合わせる
繰り返し処理は、Pythonプログラムで一連の要素に対して同じ処理を行う際に非常に便利です。この章では、繰り返し処理をリストやタプルと組み合わせて使う方法について説明します。
for文を使った繰り返し処理
for文は、リストやタプルなどのシーケンス型データの要素を順番に処理する際に使用されます。以下の例では、リストの各要素を順番に出力しています。
fruits = ["apple", "orange", "banana", "grape"]
for fruit in fruits:
print(fruit)
タプルでも同様に処理できます。
fruits = ("apple", "orange", "banana", "grape")
for fruit in fruits:
print(fruit)
range関数を使った繰り返し処理
range()関数を使って、特定の回数だけ繰り返し処理を行うことができます。range()関数は、指定された範囲の整数を生成するイテラブルオブジェクトを返します。以下の例では、0から4までの整数を順番に出力しています。
for i in range(5):
print(i)
リストやタプルのインデックスを使って要素にアクセスする場合、range()関数とlen()関数を組み合わせることができます。以下の例では、リストの各要素とそのインデックスを出力しています。
fruits = ["apple", "orange", "banana", "grape"]
for i in range(len(fruits)):
print(i, fruits[i])
繰り返し処理を使って、リストやタプルの要素に対して繰り返し操作を行うことができます。例えば、要素を変更したり、条件に応じた処理を行ったりすることができます。繰り返し処理をマスターすることで、Pythonプログラムの効率を向上させることができます。
リスト内包表記
リスト内包表記は、リストを簡潔に生成するための繰り返し処理の表現方法です。リスト内包表記を使うと、一般的なfor文よりも短く、読みやすいコードを書くことができます。
例えば、0から9までの整数の二乗を格納したリストを作成する場合、以下のようにリスト内包表記を使って表現できます。
squares = [x**2 for x in range(10)]
print(squares) # [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]を出力
リスト内包表記には条件を追加することもできます。例えば、0から9までの偶数の二乗を格納したリストを作成する場合、以下のように表現できます。
even_squares = [x**2 for x in range(10) if x % 2 == 0]
print(even_squares) # [0, 4, 16, 36, 64]を出力
リスト内包表記は、リストだけでなく、タプルや他のシーケンス型データにも適用することができます。以下の例では、タプルの各要素を2倍にした新しいタプルを作成しています。
original_tuple = (1, 2, 3, 4, 5)
doubled_tuple = tuple(x * 2 for x in original_tuple)
print(doubled_tuple) # (2, 4, 6, 8, 10)を出力
繰り返し処理をリストやタプルと組み合わせることで、データの操作や変換を効率的に行うことができます。Pythonのfor文、while文、リスト内包表記などの機能を使いこなすことで、コードの可読性と効率を向上させることができます。