Python 3で不規則なリストのリストをフラット化する方法
Pythonでは、入れ子になったリストをフラット化する方法がいくつかあります。ここでは、リスト内包表記や再帰関数を使用して不規則なリストのリストをフラット化する方法を解説します。
リスト内包表記を使用する方法
リスト内包表記を使用すると、一行のコードでリストをフラット化することができます。以下は、リスト内包表記を使用した例です。
nested_list = [[1, 2, [3]], [4, [5, 6]], 7] flat_list = [item for sublist in nested_list for item in (sublist if isinstance(sublist, list) else [sublist])] print(flat_list)
上記のコードを実行すると、以下のように入れ子になったリストがフラット化されたリストが出力されます。
[1, 2, 3, 4, 5, 6, 7]
再帰関数を使用する方法
再帰関数を使用する方法もあります。以下は、再帰関数を使用した例です。
def flatten_list(nested_list): flat_list = [] for item in nested_list: if isinstance(item, list): flat_list.extend(flatten_list(item)) else: flat_list.append(item) return flat_list nested_list = [[1, 2, [3]], [4, [5, 6]], 7] flat_list = flatten_list(nested_list) print(flat_list)
上記のコードを実行すると、同様に入れ子になったリストがフラット化されたリストが出力されます。
[1, 2, 3, 4, 5, 6, 7]
itertoolsモジュールを使用する方法
itertoolsモジュールを使用する方法もあります。以下は、itertools.chain.from_iterable()を使用した例です。
import itertools nested_list = [[1, 2, [3]], [4, [5, 6]], 7] flat_list = list(itertools.chain.from_iterable(nested_list)) print(flat_list)
上記のコードを実行すると、同様に入れ子になったリストがフラット化されたリストが出力されます。
[1, 2, 3, 4, 5, 6, 7]
これらの方法を使って、Pythonで不規則なリストのリストを効果的にフラット化することができます。
Python 3で不規則な(任意に入れ子になった)リストのリストをフラット化するには、再帰関数を使用する方法があります。以下はその手順です:
1. リストを走査し、各要素がリストであるかどうかを確認します。
2. もし要素がリストであれば、再帰的にそのリストをフラット化します。
3. フラット化した要素を新しいリストに追加します。
4. 最終的に、すべての入れ子リストがフラット化されたリストが得られます。以下は、この手順を実装したPythonのサンプルコードです:
“`python
def flatten_list(nested_list):
flat_list = []
for item in nested_list:
if isinstance(item, list):
flat_list.extend(flatten_list(item))
else:
flat_list.append(item)
return flat_listnested_list = [[1, 2, [3, 4]], [5, [6, 7]], 8]
flat_list = flatten_list(nested_list)
print(flat_list)
“`このコードを実行すると、入れ子になったリストがフラット化されたリストが出力されます。再帰関数を使用することで、不規則な入れ子リストのリストを効率的にフラット化することができます。