Pythonでリストを指定した長さごとに分割する方法(iterとisliceの活用)
はじめに
Pythonでリストを任意の長さごとに複数のサブリストへ分割したい場合、リスト内包表記と「iter」メソッド、そしてitertoolsモジュールの「islice」メソッドを組み合わせると、簡潔かつ効率的に実装できます。
本記事では、実際のコード例とその実行結果をもとに、この手法の仕組みをわかりやすく解説します。
サンプルコード
以下に、リストを指定した長さごとに分割する実装例を示します。
from itertools import islice
my_list = [11, 22, 33, 34, 45, 26, 87, 11]
print("The list is :")
print(my_list)
length_to_split = [2, 5, 3]
print("The split length list is :")
print(length_to_split)
temp = iter(my_list)
my_result = [list(islice(temp, element)) for element in length_to_split]
print("The result is :")
print(my_result)実行結果
The list is : [11, 22, 33, 34, 45, 26, 87, 11] The split length list is : [2, 5, 3] The result is : [[11, 22], [33, 34, 45, 26, 87], [11]]
コードの解説
まず、必要なパッケージであるitertoolsモジュールからisliceをインポートします。
整数のリストmy_listを定義し、コンソールに表示します。
次に、各サブリストの長さを指定するための整数リストlength_to_splitを定義し、こちらもコンソールに表示します。
リストに対して「iter」メソッドを呼び出すことでイテレータを生成し、変数tempに代入します。イテレータにすることで、同じデータから順番に要素を取り出せるようになります。
リスト内包表記を使ってlength_to_splitの各要素(分割サイズ)を順に処理し、そのたびに「islice」メソッドでイテレータから指定個数分の要素を取り出します。
isliceが返すイテレータはlist()でリストに変換され、最終的にmy_resultに格納されます。
以上の処理により得られた分割後のリストが、コンソールに出力されます。
ポイントまとめ
islice(temp, n)は、イテレータtempから先頭のn個の要素を取り出すスライス操作です。
元のリストを直接スライスするのではなく、イテレータを介することで、前回取り出した位置の続きから次の分割が始まります。
length_to_splitの合計が元のリストの長さを超える場合、余った部分は空のリストになります。逆に合計が足りない場合は、残りの要素は無視されるため、分割サイズの設計には注意が必要です。
-
Pythonの型変換を徹底解説|文字列・数値・コンテナ型の変換方法
Pythonでは、データを簡単に別の型へ変換することができます。型変換(キャスト)にはさまざまな組み込み関数が用意されており、文字列から数値への変換や、リスト・タプル・セットといったコンテナ型同士の変換などが可能です。この記事では、Pythonで行える主な型変換の方法を、具体的なサンプルコードとともに分かりやすく解説します。文字列を数値型に変換する文字列型のオブジェクトを数値に変換するには、int() や float() などの関数を使用します。int() 関数を使うと、数値を表す文字列を整数値(10進数)に変換できます。引数には文字列を指定し、デフォルトの基数は10です。また、第2引数で基数
-
Pythonでリストを出力する方法|インデックスの基本から実践的な出力テクニックまで
Pythonのリストとは? Pythonのリスト(list)は、複数の要素をひとつにまとめて管理できるデータ型です。リスト内の各要素は順序を持って格納されており、それぞれの位置(インデックス)を指定することで、任意の要素にアクセスできます。 インデックスは0から始まる リストのインデックスは0から始まる点に注意が必要です。つまり、最初の要素が list[0]、2番目の要素が list[1]、3番目の要素が list[2] に対応します。 例えば、以下のようなリストを考えてみましょう。 numbers = [10, 20, 50, 40] print(numbers[2]) # 出力結果:5