この章では、Pythonのコレクション(リスト、辞書、セット、タプル)や配列の操作方法について学びます。これらのデータ構造は、データのグループを効率的に管理し、操作するために使用されます。また、for
ループやwhile
ループと組み合わせて、データの処理を自動化する方法についても解説します。
8.1 配列の定義と初期化、要素のアクセス方法
Pythonには、専用の配列型はありませんが、リスト(list
)が同様の機能を提供します。リストは、複数の要素を保持できるデータ構造で、各要素にはインデックス(位置)を使ってアクセスできます。
リストの定義と要素のアクセス
# リストの定義
numbers = [1, 2, 3, 4, 5]
# 要素のアクセス
print(numbers[0]) # 1(インデックス0の要素)
print(numbers[3]) # 4(インデックス3の要素)
リストは、ゼロから始まるインデックスでアクセスします。リスト内の要素は変更可能です。
要素の変更と追加
# 要素の変更
numbers[1] = 10
print(numbers) # [1, 10, 3, 4, 5]
# 要素の追加
numbers.append(6)
print(numbers) # [1, 10, 3, 4, 5, 6]
8.2 多次元配列とジャグ配列の使い分け
Pythonでは、リストのリストを使って多次元配列を表現できます。これは、行と列を持つデータ(例:行列)を扱う際に便利です。
多次元リストの例
# 2次元リスト(行列)の定義
matrix = [
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]
]
# 要素のアクセス
print(matrix[0][1]) # 2(1行2列目の要素)
多次元リストでは、複数のインデックスを使用して要素にアクセスします。ジャグ配列(異なる長さの行を持つ配列)も同じリスト構造で表現できます。
ジャグ配列の例
# ジャグ配列(行の長さが異なるリスト)
jagged_array = [
[1, 2, 3],
[4, 5],
[6]
]
# 要素のアクセス
print(jagged_array[1][1]) # 5
8.3 List, Dictionary, Queue, Stackの基本操作
Pythonには、さまざまなコレクション型があります。それぞれに特化した操作方法があります。
リスト(list
)
リストは、可変長のシーケンス型で、要素の追加、削除、検索などが可能です。
fruits = ["apple", "banana", "cherry"]
fruits.append("orange") # 要素の追加
print(fruits) # ['apple', 'banana', 'cherry', 'orange']
辞書(dict
)
辞書は、キーと値のペアを持つデータ構造で、データをキーで管理します。
person = {"name": "Alice", "age": 30}
print(person["name"]) # "Alice"
# 新しいキーと値を追加
person["city"] = "New York"
print(person) # {'name': 'Alice', 'age': 30, 'city': 'New York'}
キュー(queue
)
Pythonではリストを使ってキューを実装できますが、collections
モジュールのdeque
を使うと効率的です。キューはFIFO(先入れ先出し)のデータ構造です。
from collections import deque
queue = deque(["Alice", "Bob", "Charlie"])
queue.append("David") # 要素の追加
print(queue.popleft()) # 最初の要素を取り出す → "Alice"
スタック(stack
)
スタックはLIFO(後入れ先出し)のデータ構造です。リストを使ってスタックを実装できます。
stack = []
stack.append("item1") # 要素を積む
stack.append("item2")
print(stack.pop()) # "item2"を取り出す
8.4 LINQを使ったデータの操作 (Where, Select, OrderByなど)
PythonにはLINQのようなクエリ構文はありませんが、リスト内包表記やfilter
、map
、sorted
関数を使って同様の操作が可能です。
filter
によるデータのフィルタリング
numbers = [1, 2, 3, 4, 5, 6]
even_numbers = list(filter(lambda x: x % 2 == 0, numbers))
print(even_numbers) # [2, 4, 6]
map
によるデータの変換
squared_numbers = list(map(lambda x: x**2, numbers))
print(squared_numbers) # [1, 4, 9, 16, 25, 36]
sorted
によるデータの並べ替え
sorted_numbers = sorted(numbers, reverse=True)
print(sorted_numbers) # [6, 5, 4, 3, 2, 1]
8.5 コレクションの反復処理 (foreachループ)
Pythonのfor
ループは、リストや辞書、セットなどのコレクションを反復処理するために使用されます。
リストの反復処理
fruits = ["apple", "banana", "cherry"]
for fruit in fruits:
print(fruit)
辞書の反復処理
person = {"name": "Alice", "age": 30, "city": "New York"}
for key, value in person.items():
print(f"{key}: {value}")
8.6 配列やコレクションのその他の操作
Pythonのコレクションには、以下のような便利な操作があります。
スライス: リストの一部を抽出する
numbers = [1, 2, 3, 4, 5]
print(numbers[1:4]) # [2, 3, 4]
リストの結合: 2つのリストを結合する
list1 = [1, 2, 3]
list2 = [4, 5, 6]
combined = list1 + list2
print(combined) # [1, 2, 3, 4, 5, 6]
要素の削除: remove
やpop
を使ってリストから要素を削除
numbers = [1, 2, 3, 4]
numbers.remove(3) # 値3を削除
print(numbers) # [1, 2, 4]
まとめ
この章では、Pythonの基本的なコレクションと配列の操作について学びました。リスト、辞書、キュー、スタックの使い方や、コレクションを操作するための関数について理解することで、データの管理や処理がより効率的に行えるようになります。次の章では、ファイル操作と入出力について詳しく見ていきます。