Pythonのリスト解析

巴扎黑
巴扎黑オリジナル
2017-06-27 09:09:411963ブラウズ

リスト解析、主にリストを動的に作成するために使用されます

この記事では主に、リスト解析ステートメントと組み合わせた lambda、map()、および filter() の使用法について説明します

リスト解析の基本構文は次のとおりです: [expr for iter_var in iterable]

このステートメントの中核は、反復可能なオブジェクトのすべてのエントリを反復する for ループです。前述の expr はシーケンスの各メンバーに適用され、最終的な結果の値は式によって生成されたリストになります。

1. 基本的な使用法

例を挙げてみましょう

>>> [i for i in range(0,8)]

[0,1,2 , 3,4,5,6,7]

ここで、i は基本構文の expr と iter_val の両方です。別の方法では、内部の値に対して演算を実行し、すべてのメンバーに 2 を掛けます

> > [i*2 for i in range(0,8)]

[0, 2, 4, 6, 8, 10, 12, 14]

これは基本構文に従って完全に記述されたリスト解析です

2. recycle ステートメントの後に判定条件を追加します

拡張バージョンの構文: [expr for iter_val in iterable if cond_expr]

リストをフィルターするために、その後にいくつかのステートメントを追加することもできます。この値内の 2 で割り切れる数値

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

[ 2, 4, 6]


This このステートメントフィルターの使用に似ているため、Python の組み込みフィルター関数を使用して同じ値を実現することもできます

>>> l = filter(lambda x:x%2==0, range(1 , 8) )

>なぜ?フィルターの戻り値はジェネレーターであるため、ジェネレーターはすべての値を知ることはできません。



3. リスト分析と同じ結果を得るためにマップが使用されます。 >>map(lambda x: x*2, range(1,8))


[2, 4, 6, 8, 10, 12, 14]

を使用すると取得できます [x * 2 for x in range(1,8)] も同じ効果がありますが、後者の方が、map() より効率的です

4. 行列の生成

3 行と 5 つの行列を取得する必要がある場合列 1)、(0、2)、(0、3)、(0、4)、

(1、0)、(1、1)、(1、2)、(1、3)、( 1, 4),

(2, 0), (2, 1), (2, 2), (2, 3), (2, 4)]

PEP 202 でさらに参考資料を見つけることもできます。解析情報のリスト

以上がPythonのリスト解析の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。