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

Pythonリスト内包?


Pythonは、あるリストを別のリストから導出するためのコンパクトな構文を提供します。これらの式はリスト内包表記と呼ばれます。リスト内包表記は、Pythonで最も強力なツールの1つです。 Pythonのリスト内包表記は、関数型プログラミングの概念に対する言語のサポートの一例です。

Pythonリスト内包表記は、関数またはフィルターをアイテムのリストに適用するための非常に簡単な方法です。リスト内包表記は、正しく使用すると非常に便利ですが、注意しないと非常に読みにくくなります。

構文

リスト内包表記の一般的な構文は-

です。
[expr for element in iterable if condition]

上記は-

と同等です
for element in iterable:
   if condition:
      expr

たとえば、リスト内の各数値の2乗を計算するとします。これを行うには、計算用の式とループオーバーする入力シーケンスを指定します。

>>> lst = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
>>> squares = [x**2 for x in lst]
>>> print(squares)
[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]

リスト内包表記とForループ

#USING FOR LOOP
evens = []
for i in range(10):
   if i % 2 == 0:
      evens. append(i)
print(evens)

出力

[0, 2, 4, 6, 8]

上記のコードを書くためのより良い、より速い方法は、リスト内包表記を使用することです。

>>> [i for i in range(10) if i % 2 ==0]
[0, 2, 4, 6, 8]

ご覧のとおり、リスト内包表記を使用してコードを記述する方がはるかに効率的で、短く、要素も少なくて済みます。

リスト内包表記とラムダ関数

単一引数関数を適用しない限り、リスト内包表記は、単純な場合のマップ組み込み関数よりも明確です。マップでは、計算のためにラムダ関数を作成する必要がありますが、これは視覚的にノイズが多くなります。

>>> lst = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
>>> list(map(lambda x: x**2, lst))
[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]

マップとは異なり、リスト内包表記を使用すると、入力リストから項目を簡単にフィルタリングして、結果から対応する出力を削除できます。

条件式を使用したリスト内包表記

たとえば、2と5の両方で割り切れる100未満の数値のみを計算したいとします。

>>> lst = [x for x in range(100) if x % 2 == 0 if x % 5 == 0]
>>> print(lst)
[0, 10, 20, 30, 40, 50, 60, 70, 80, 90]

別の例を見てみましょう。ここでは、2で割り切れる数の2乗のみを計算します。ここでは、ループの後にリスト内包に条件式を追加することでこれを行います-

>>> lst=[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
>>> even_squares = [x**2 for x in lst if x % 2 == 0]
>>> print(even_squares)
[4, 16, 36, 64, 100]

1から100までの偶数を計算します。

>>> # a list of even numbers between 1 and 100
evens = [i for i in range(1,100) if not i % 2]
>>> print(evens)
[2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42, 44, 46, 48, 50, 52, 54, 56, 58, 60, 62, 64, 66, 68, 70, 72, 74, 76, 78, 80, 82, 84, 86, 88, 90, 92, 94, 96, 98]

膨大な数のアイテムをループする場合、リスト内包表記はループの場合よりもはるかに高速です。読みやすさだけでそれらを可能な限り使用する説得力のある理由ではない場合は、速度を上げる必要があります。


  1. Pythonの内包表記

    特定のPythonシーケンスを使用して新しいシーケンスを作成できます。これは理解と呼ばれます。これは基本的に、別のシーケンスを使用してリスト、辞書、セット、またはジェネレーターとなるシーケンスを生成するための簡潔なコードブロックを作成する方法です。異なるタイプのシーケンス間の変換の複数のステップが含まれる場合があります。 リスト内包表記 この方法では、既存のリストの値を操作して新しいリストを作成します。次の例では、リストを取得し、指定されたリストの各要素に3を追加して、新しいリストを作成します。 例 given_list = [x for x in range(5)] print(given

  2. Pythonリストの理解とスライス?

    このセクションでは、Pythonリストのスライスとリスト内包表記について理解します。 リストスライスとは何ですか? 名前が示すように、スライスとは–何かをより小さな断片(スライス)にカットすることを意味します。リストスライスは、元のリストからリストの一部を抽出するプロセスです。リストスライスでは、必要なもの(開始、停止、スライスする増分など)に基づいてリストをカットします。 リスト内包表記とは何ですか? リスト内包表記は、既存のリストに基づいてリストを生成します。これは、既存のリストに基づいて新しいリストを定義および作成するための洗練された方法を提供します。 リストスライス リストをスラ