ホームページ >バックエンド開発 >Python チュートリアル >Pythonのリスト内包表記の詳しい解説

Pythonのリスト内包表記の詳しい解説

WBOY
WBOYオリジナル
2023-06-11 09:01:3614433ブラウズ

Python のリスト内包表記は、リストを迅速に生成できる便利で高速な構文です。その文法形式は数学の集合導出に似ており、意味論も似ているため、理解しやすく、使いやすくなっています。 Python のリスト内包表記については、以下で詳しく紹介します。

1. 基本的な文法構造

リスト内包表記の基本的な文法構造は次のとおりです:

[反復可能な if 条件の項目の式]

where, 式変数や関数呼び出しなどの操作を含む、リスト生成に関係する式を表します。item は、生成されたリスト内の要素を表します。iterable は、リスト、タプル、セットなどの反復可能なオブジェクトを表します。condition が条件のフィルタリングを表す場合、省略できるもの。

2. 一般的な使用シナリオ

1. 整数のリストを生成する

たとえば、1 から 10 までの整数のリストを生成するには、次のコードを使用できます。 :

num_list = [i for i in range(1,11)]
print(num_list)

出力結果は次のとおりです:

[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

ここでは range() 関数を使用して 1 ~ 10 の整数反復子を生成し、リスト内包表記によって要素が 1 つずつ抽出されます。そしてリスト化しました。

2. 正方リストの生成

たとえば、1 から 10 までの整数の正方リストを生成するには、次のコードを使用できます:

square_list = [i**2 for i in range(1,11)]
print(square_list)

出力結果は:

[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]

3. リスト要素のフィルタリング

たとえば、文字列リストから 3 より長い文字列をフィルタリングして除外するには、次のコードを使用できます:

str_list = ['hello', 'world', 'python', 'list', 'comprehension', 'study']
new_list = [s for s in str_list if len(s) > 3]
print(new_list)

The出力結果は次のとおりです:

['hello', 'world', 'python', 'comprehension', 'study']

ここでは if ステートメントを使用して要素を条件付きでフィルターします。新しいリストには、長さが 3 より大きい文字列のみを入力できます。

4. 複数のループ

たとえば、1 から 9 までのすべての積を生成するには、次のコードを使用できます:

mul_list = [i*j for i in range(1,4) for j in range(1,4)]
print(mul_list)

出力結果は次のとおりです:

[1, 2, 3, 2, 4, 6, 3, 6, 9]

ここでは、乗算演算は 2 レベルのループを通じて実装されています。つまり、i と j がそれぞれ 1、2、3 の場合、それらの積がリスト内の要素を構成します。

3. ネストされたリスト内包表記

リストを生成するときに、要素に対してより複雑な操作を実行する必要がある場合がありますが、この場合は、ネストされたリスト内包表記を使用できます。ネストされたリスト内包表記は、リスト内包表記に基づいて再度ネストされたリスト内包表記であり、その構文構造は次のとおりです:

[expression for item in iterable ifcondition for sub_item in sub_iterable if sub_condition ]

このうち、expression、item、iterable、condition の意味は上記の基本構文構造と一致しており、sub_item は項目の走査に基づいて再度走査される要素を表し、sub_iterable は sub_item の反復オブジェクトを表し、sub_condition は sub_item のフィルタリング条件を表します。

次に、ネストされたリストの内包表記の一般的な例をいくつか示します。

1. 正方行列の生成

たとえば、3×3 正方行列を生成するには、次のコードを使用できます:

matrix = [[i*j for j in range(1,4)] for i in range(1,4)]
for row in matrix:
    print(row)

出力結果は次のとおりです:

[1, 2, 3]
[2, 4, 6]
[3, 6, 9]

This ここでは 2 つのレベルのネストされた導出が使用されています。外側の導出では 3 つのリストが生成され、内側の導出では各リストに 3 つの要素が生成されるため、3×3 の正方行列が形成されます。

2. 奇数と偶数をフィルタリングする

たとえば、整数のリストから奇数と偶数をフィルタリングしてそれぞれ 2 つのリストを形成するには、次のコードを使用します。 #

num_list = [1,2,3,4,5,6,7,8,9,10]
odd_list = [i for i in num_list if i%2 == 1]
even_list = [i for i in num_list if i%2 == 0]
print(odd_list)
print(even_list)

出力結果はそれぞれ次のとおりです。

[1, 3, 5, 7, 9]
[2, 4, 6, 8, 10]

ここでは、元のリストの奇数要素と偶数要素をそれぞれフィルタリングするために 2 つのネストされたリスト内包表記が使用されています。

4. 概要

リスト内包表記は Python 言語の優れた文法機能の 1 つで、さまざまなタイプのリストを簡単に生成でき、ネストなどの高度な機能もサポートしています。実際のプログラミングでは、リスト内包表記を学習して使用すると、コード作成の効率と読みやすさが大幅に向上します。

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

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