Pythonでリストを分割する方法(スライス / split() / itertools)
生徒
「先生、Pythonでリストを分けたり切り出したりする方法ってあるんですか?」
先生
「もちろんあるよ。Pythonではスライス(slice)、split()、itertoolsなどの方法でリストを分割できるんだ。」
生徒
「いくつもあるんですね!どんな違いがあるんですか?」
先生
「それぞれ使い方や得意な場面が違うんだ。今日はそれを順番に解説していくよ。」
1. スライス(slice)でリストを一部だけ取り出す
まずはスライスです。これはリストから一部の要素だけを切り出して新しいリストを作る方法です。
書き方はリスト[start:stop]のようにして、「開始位置から終了位置の手前まで」を取り出します。
fruits = ["りんご", "バナナ", "みかん", "ぶどう", "もも"]
print(fruits[1:4])
['バナナ', 'みかん', 'ぶどう']
このように、インデックス1から3までの要素を取り出しています。4は含まれません。
2. スライスの省略記法とステップ
スライスでは、startやstopを省略することもできます。また、3つ目の値でステップ(何個飛ばし)も指定できます。
print(fruits[:3]) # 最初から3つ
print(fruits[::2]) # 2つ飛ばしで
['りんご', 'バナナ', 'みかん']
['りんご', 'みかん', 'もも']
このように、スライスを使えば柔軟にリストを分割できます。
3. split()は文字列をリストに分割
split()はリストを分割するのではなく、文字列(str型)を「区切り文字」で区切ってリストにする関数です。
たとえば、カンマやスペースで区切られたデータをリストにしたいときに使います。
text = "りんご,バナナ,みかん"
fruits = text.split(",")
print(fruits)
['りんご', 'バナナ', 'みかん']
このように、1つの文字列を区切って、リストとして扱えるようになります。
4. split()の使いどころ
split()はCSVファイルやログデータなど、区切られた文字列を扱うときにとても便利です。
使い方は簡単で、split("区切り文字")と書くだけです。区切り文字がスペースなら、split()だけでも動きます。
line = "apple orange banana"
words = line.split()
print(words)
['apple', 'orange', 'banana']
5. itertoolsを使ってリストを等間隔で分割する
Python標準ライブラリのitertoolsを使えば、リストを決まった数ずつに分割することもできます。
たとえば、10個の要素を3個ずつのかたまりに分けたいときなどに便利です。
from itertools import islice
def chunk_list(data, size):
return [data[i:i+size] for i in range(0, len(data), size)]
nums = list(range(1, 11))
chunks = chunk_list(nums, 3)
print(chunks)
[[1, 2, 3], [4, 5, 6], [7, 8, 9], [10]]
このように、好きなサイズで分割できます。itertoolsのislice()と組み合わせると、より高度な操作も可能です。
6. ループとスライスで自分でも分割できる
標準のfor文とスライスを組み合わせて、自分でリストをグループに分けることもできます。
data = [1, 2, 3, 4, 5, 6, 7, 8]
group_size = 2
groups = []
for i in range(0, len(data), group_size):
groups.append(data[i:i+group_size])
print(groups)
[[1, 2], [3, 4], [5, 6], [7, 8]]
この方法はitertoolsを使わなくても、初心者でも理解しやすいのでおすすめです。
7. split()とスライスの違いに注意
split()は文字列をリストに分割するもの、スライスは既にあるリストを部分的に取り出すための機能です。
同じ「分ける」でも対象や使い方が違うので混同しないようにしましょう。
8. リストの分割はPythonの基本スキル
Pythonでリストを扱うとき、スライス、split、itertoolsなどを使った分割処理はとてもよく使います。
データ処理、画面表示、分析など、あらゆる場面で役に立つ基本テクニックです。
プログラミングに慣れていない初心者の方も、例を見ながらひとつひとつ実行してみると理解が深まります。