Python リストを半分に分割

Hemank Mehtani 2023年1月30日
  1. Python でリストスライスを使用してリストを半分に分割する
  2. Python の半分で islice() 関数を使用してリストを分割する
  3. Python で accumulate() 関数を使用してリストを半分に分割する
Python リストを半分に分割

リストは特定のインデックスに要素を格納し、変更可能です。つまり、後でリストの値を更新できます。

このチュートリアルでは、リストを半分に分割する方法を学習します。

Python でリストスライスを使用してリストを半分に分割する

リストスライスは、元のリストが影響を受けないまま、一部の操作のためにリストの特定の部分を取得します。つまり、割り当てられたタスクを実行するためにリストの複製が作成されます。これには、Python のスライス演算子([:])が使用されます。

次のコードでは、リストを半分に分割します。

lst = ["a", "b", "c", "d", "e", "f"]
print(lst[:3])
print(lst[3:])

出力:

['a', 'b', 'c']
['d', 'e', 'f']

リストを半分に分割する関数を作成することもできます。len() 関数を使用して、リストの長さを見つけます。この値を半分にし、リストスライス方法を使用して半分に分割します。

例えば、

def split_list(a_list):
    half = len(a_list) // 2
    return a_list[:half], a_list[half:]


A = ["a", "b", "c", "d", "e", "f"]
B, C = split_list(A)
print(B)
print(C)

出力:

['a', 'b', 'c']
['d', 'e', 'f']

既存のリストの半分を返す関数 split_list を作成しました。

割り当てられたタスクを実行するために重複リストが作成されるため、元のリストは変更されないことに注意してください。

Python の半分で islice() 関数を使用してリストを分割する

Python では、itertools は組み込みモジュールであり、イテレーターを効率的に処理できます。

これにより、リストや文字列などの反復可能オブジェクトの反復が非常に簡単になります。islice 関数は itertools モジュールの一部です。引数として渡された反復可能なコンテナに記載されている値を選択的に出力します。

例えば、

from itertools import islice

Input = ["a", "b", "c", "d", "e", "f"]
length_to_split = [len(Input) // 2] * 2
lst = iter(Input)
Output = [list(islice(lst, elem)) for elem in length_to_split]

print("Initial list:", Input)
print("After splitting", Output)

出力:

Initial list: ['a', 'b', 'c', 'd', 'e', 'f']
After splitting [['a', 'b', 'c'], ['d', 'e', 'f']]

Python で accumulate() 関数を使用してリストを半分に分割する

zip() 関数は、イテラブルの要素を組み合わせるために使用されます。itertools モジュールの accumulate() 関数と一緒に使用して、リストを半分に分割できます。

例えば、

from itertools import accumulate

Input = ["a", "b", "c", "d", "e", "f"]
length_to_split = [len(Input) // 2] * 2
Output = [
    Input[x - y : x] for x, y in zip(accumulate(length_to_split), length_to_split)
]
print("Initial list :", Input)
print("After splitting", Output)

出力:

Initial list : ['a', 'b', 'c', 'd', 'e', 'f']
After splitting [['a', 'b', 'c'], ['d', 'e', 'f']]