Python
 Computer >> コンピューター >  >> プログラミング >> Python

Python Flatten List:ハウツーガイド

リストのフラット化とは、リストからディメンションを削除するプロセスを指します。ディメンションとは、リスト内のアイテムを見つけるために必要な追加の座標を指します。リスト内包表記、ネストされたforループ、またはitertools.chain()メソッドを使用して、Pythonリストをフラット化できます。

Pythonリストには複数のディメンションを含めることができます。これは、リスト内にリストがあることを意味します。これらのリストは、「ネストされたリスト」と呼ばれることもあり、通常のリストに戻すことができます。

これは、リスト内のリストから単一のリストにすべての値を移動できることを意味します。リストのリストをリストに変換することを「リストのフラット化」と呼びます。

PythonFlattenリスト

Pythonリストをフラット化する方法は3つあります。

  • リスト内包表記を使用します。
  • ネストされたforループを使用します。
  • itertools.chain()メソッドを使用します。

このガイドでは、リスト内包表記、forループ、および itertools.chain()を使用してリストをフラット化する方法について説明します。 方法。独自のプログラムでリストのフラット化を開始できるように、2つの例を紹介します。

Python:リスト内包表記を使用してリストをフラット化

Pythonリスト内包表記は、既存のリストの内容に基づいてリストを定義します。理解の範囲内で条件や変更を指定することにより、新しいリストに含まれる各要素をカスタマイズできます。

内包表記は、forループを使用してリストを反復処理し、新しいリストを生成するための構文糖衣です。これは、forループと同じ基本的な方法で機能しますが、異なる構文を使用することを意味します。

リスト内包表記の構文は次のとおりです。

参加者の81%は、ブートキャンプに参加した後、自分たちの技術的な仕事の見通しについてより自信を持っていると述べました。今日のブートキャンプにマッチしましょう。

平均的なブートキャンプの卒業生は、ブートキャンプの開始から最初の仕事を見つけるまで、キャリアの移行に6か月も費やしませんでした。

numbers = [1, 2, 3]

new_numbers = [number * 2 for number in numbers]

この理解度は、「番号」リストの各番号に2を掛けます。

フラットリスト:リスト内包表記の例

レストランで利用できるさまざまなサンドイッチの詰め物を含むリストのリストがあります。現在、リストのリストは次のようになっています:

foods = [
	["Tomato and Cucumber", "Hummus, Beetroot, and Lettuce"],
	["Cheese", "Egg"],
	["Ham", "Bacon", "Chicken Club", "Tuna"]
]

最初のリストにはビーガンサンドイッチの詰め物が含まれています。 2番目のリストにはベジタリアンサンドイッチの詰め物が含まれています。 3番目のリストには、肉を含むすべてのサンドイッチフィリングが含まれています。

このリストを単一の食品リストに変更したいと思います。 2次元ではなく1次元のリストを操作する方が簡単です。このリストに複数のディメンションを含める必要はありません。リストから2番目のディメンションを削除するには、リスト内包表記を使用できます:

new_foods = [food for sublist in foods for food in sublist]
print(new_foods)

このリスト内包表記は、「foods」Python変数のすべてのリストを繰り返し処理します。次に、各値がメインリストに追加されます。リストが生成されたら、コンソールに出力します。

コードを見て、何が起こるか見てみましょう:

['Tomato and Cucumber', 'Hummus, Beetroot, and Lettuce', 'Cheese', 'Egg', 'Ham', 'Bacon', 'Chicken Club', 'Tuna']

リストのリストは、フラットリストに正常に変換されました。すべての材料が3つではなく1つのリストに表示されるようになりました。

Python:ネストされたForループを使用してリストをフラット化

ネストされたPythonforループを使用しても、これと同じ結果が得られます。 「ネストされたforループ」は、「forループ内のaforループ」の別の言い方です。リスト内包表記は、次のforループを表すもう1つの方法です。

new_foods = []
for sublist in foods:
	for food in sublist:
		new_foods.append(food)

print(new_foods)

このコードでは、2つのforループを使用して、元のリストリストの各リストの各リストアイテムを反復処理します。コードを実行してみましょう:

['Tomato and Cucumber', 'Hummus, Beetroot, and Lettuce', 'Cheese', 'Egg', 'Ham', 'Bacon', 'Chicken Club', 'Tuna']

私たちのプログラムは、リスト内包と同じ結果を返します。ほとんどの場合、リスト内包表記はforループよりも優れたソリューションです。リスト内包表記は短く、この場合、ネストされたforループよりも読みやすくなっています。

Python:Itertoolsを使用してリストをフラット化

Itertoolsは、Python標準ライブラリのモジュールです。このモジュールはさまざまなメソッドを提供し、反復可能なオブジェクトとジェネレーターを簡単に操作できるようにします。

ここでは、 chain()のみを参照します。 方法。このメソッドはリストのリストを受け入れ、フラット化されたリストを返します。

Pythonインポートステートメントを使用して、itertoolsモジュールをコードにインポートすることから始めます。

import itertools

次に、リストのリストを定義し、 chain()を使用します リストをフラット化する方法:

foods = [
	["Tomato and Cucumber", "Hummus, Beetroot, and Lettuce"],
	["Cheese", "Egg"],
	["Ham", "Bacon", "Chicken Club", "Tuna"]
]

new_foods = itertools.chain(*foods)

このコードでは、*記号を使用してリストを解凍します。これにより、リストが chain()で解析できる関数の引数に変換されます。 メソッド。

chain() メソッドはitertools.chainオブジェクトを返します。フラット化されたリストを表示するには、このオブジェクトをリストに変換する必要があります。これは、 list()を使用して行います 方法:

print(list(new_foods))

コードを実行してみましょう:

['Tomato and Cucumber', 'Hummus, Beetroot, and Lettuce', 'Cheese', 'Egg', 'Ham', 'Bacon', 'Chicken Club', 'Tuna']

私たちのコードは私たちのリストをフラットにしました。

itertoolsはリストをフラット化するのに効果的な方法ですが、これまでに説明した最後の2つのアプローチよりも高度です。

これは、新しい依存関係を導入するitertoolsをコードにインポートする必要があるためです。さらに、 chain() 方法は、理解するのが難しいかもしれない開梱を含みます。

結論

リスト内包表記、ネストされたforループ、およびitertools.chain()メソッドを使用して、Pythonリストをフラット化できます。リスト内包表記は最も「Pythonic」な方法であるため、ほとんどの場合に好まれます。

ネストされたforループは効果的ですが、リスト内包よりも多くのコード行を消費します。 itertools.chain()メソッドも同様に効果的ですが、初心者には理解しにくい場合があります。

Pythonがリストをフラット化するために必要なすべてのツールを提供する場合、通常、新しいライブラリ(itertools)をインポートする必要はありません。

Pythonについてもっと知りたいですか? Pythonの完全な学習方法ガイドをご覧ください。専門家による学習のヒントと、学習できるトップコースと書籍のリストがあります。


  1. Pythonのリスト内検索:初心者向けガイド

    Pythonリストでアイテムをどのように見つけますか?これは、すべてのPythonコーダーがある時点で遭遇する問題です。幸い、この言語には、inを使用するなど、リスト内のアイテムを見つけるためのさまざまな方法が用意されています。 演算子または線形探索。 このガイドでは、リスト内のアイテムを見つける4つの方法について説明します。これらの各方法の例を見ていき、それらがどのように機能するかを学ぶことができます。 「in」を使用したPythonのリスト内検索 Pythonには、inという特別な演算子があります 。この演算子は、値がリストにあるかどうかを確認します。この演算子は、値がリストのメン

  2. Python Hello World:ハウツーガイド

    Pythonの「HelloWorld」プログラムは通常、コーダーがPythonで作成する最初のプログラムです。このプログラムは、printステートメントを使用してPythonコンソールに文字列を表示します。プログラムは次のようになります:print(“ Hello World”)。 Pythonバージョンが機能することを確認するために作成できる最初のプログラムの1つは、「HelloWorld」です。プログラムを作成するには、ターミナルまたは選択したコードエディター(Visual Studio Code、Vimなど)の2つの方法があります。 開始するには、マシンにPython3がインストー