Pythonでリストを均等なサイズのチャンクに分割する方法
スライス演算子を使った基本的な方法
リストを均等なサイズのチャンクに分割する最も簡単な方法は、スライス演算子を繰り返し使用し、開始位置と終了位置を固定数ずつずらしていくことです。
次の例では、12個の要素を持つリストを、長さ4の3つのリストに分割しています。
l = [10, 20, 30, 40, 50, 60, 70, 80, 90, 100, 110, 120]
x = 0
y = 12
for i in range(x, y, 4):
x = i
print(l[x:x+4])
実行結果:
[10, 20, 30, 40]
[50, 60, 70, 80]
[90, 100, 110, 120]
仕組みの解説
range(x, y, 4)は「0」「4」「8」という値を順番に生成します。各ループ処理でその値を開始位置として l[x:x+4] により4要素分を切り出すことで、元のリストが均等なサイズのチャンクへと分割されます。
リスト内包表記を使った方法
より簡潔に記述したい場合は、リスト内包表記を活用すると1行で実現できます。
l = [10, 20, 30, 40, 50, 60, 70, 80, 90, 100, 110, 120]
chunk_size = 4
chunks = [l[i:i+chunk_size] for i in range(0, len(l), chunk_size)]
print(chunks)
# [[10, 20, 30, 40], [50, 60, 70, 80], [90, 100, 110, 120]]
ジェネレーター関数を使った方法
大量のデータを扱う場合やメモリ効率を重視したい場合は、yield を使ったジェネレーター関数が便利です。全チャンクを一括生成せず、必要なタイミングで順次取り出せます。
def chunk_list(lst, n):
for i in range(0, len(lst), n):
yield lst[i:i + n]
l = [10, 20, 30, 40, 50, 60, 70, 80, 90, 100, 110, 120]
for chunk in chunk_list(l, 4):
print(chunk)
まとめ
シンプルな処理ならスライス演算子のループ、可読性を高めたいならリスト内包表記、メモリ効率を重視する大規模データにはジェネレーター関数が適しています。用途に応じて使い分けることで、Pythonでのリスト分割を効率的に行えます。
-
Pythonでテキストファイルをリストや配列として読み込む方法
Pythonでテキストファイルを読み込んでデータとして扱う方法はいくつかあります。ここでは、代表的な手法をサンプルコード付きでわかりやすく解説します。 テキストファイル全体を一度に読み込む方法 最も基本的なのは、組み込み関数 open() を使う方法です。以下のコードでは、my_file.txt を読み取りモードで開き、ファイルの内容全体を変数 my_file_data に格納した後、ファイルを閉じています。 f = open(my_file.txt, r+) my_file_data = f.read() f.close() read() 関数は、ファイルの内容をすべて一括で読み取りま
-
Pythonで文字列を単語のリストに変換する方法
文字列を単語のリストに変換したい場合は、空白文字を基準に文字列を分割するだけで実現できます。最もシンプルな方法は、文字列クラスが標準で提供している split() メソッドを使うことです。このメソッドのデフォルトの区切り文字は空白であり、文字列に対して呼び出すと、空白文字の位置で自動的に分割してくれます。split()メソッドを使う方法引数を指定せずに split() を呼び出すだけで、連続する空白もまとめて処理され、単語ごとのリストが返されます。コード例>>> Please split this string.split() [Please, split, this, st