Python には、導出 と呼ばれる特別な式があり、その機能は、データ構造を入力として受け取り、それをフィルター処理して計算し、最後に別のデータ構造を出力することです。さまざまなデータ構造に従って、リスト内包表記、集合内包表記、辞書内包表記に分けることができます。まず、最も一般的に使用されるリスト内包表記に焦点を当てましょう。
まずリスト内包表記の構文形式を見てみましょう。
listname=[オブジェクト内の変数の式 (ifcondition)]
listname: 新しく生成されたリストの名前。
表現:表現。
変数: 変数名。
(if 条件): オブジェクトから要件を満たすリストを選択するために使用されます。
指定された範囲内の値のリスト、指定された条件のリスト、条件を満たす要素で構成されるリストの 3 つの側面から開始します。
まず、10 個の数値を生成してリストに保存する必要がある場合について考えてみましょう。まず、一般的な方法を見てみましょう。
listname=[]foriinrange(10):listname.append(i)print(listname)
出力は次のとおりです。
[0,1,2,3,4,5,6,7,8,9]
リスト内包表記を使用するには、次の 1 行だけが必要です。
リスト名=[iforiinrange(10)]
出力は次のとおりです。
[0,1,2,3,4,5,6,7,8,9]
このアプローチにより、リストを定義する際の操作が簡素化されます。
リストが listname = [1,3,5,6,7,9,10,23,26,28,64,98] であることがわかっているとします。これを見つけて、その中のすべての数値を 5 ずつ加算したいとします。通常の方法:
listname=[1,3,5,6,7,9,10,23,26,28,64,98]foriinrange(len(listname)):listname[i]+=5print(listname)
出力は次のとおりです。
[6,8,10,11,12,14,15,28,31,33,69,103]
リスト内包表記の使用も非常に簡潔です。
リスト名=[1,3,5,6,7,9,10,23,26,28,64,98]リスト名=[i+5foriinlistname]
出力:
[6,8,10,11,12,14,15,28,31,33,69,103]
このタイプのリスト内包表記は最初の 2 つよりも複雑ですが、より多くのコードを簡素化できます。
コード形式を見てみましょう。
リストが listname = [8,33,53,64,73,95,101,123,126,164,198] であることがわかっているため、リスト内の 100 より小さい数値と大きい数値を見つけて、それらを 0.8 で乗算し、最後に次のようにする必要があります。それらをリストに戻します。
通常の方法を使用する場合:
listname=[10,20,30,40,60,120,130,140,160,180,200]newlist=[]#保存する新しいリストを作成 foriinrange(len(listname)):#インデックス値の走査 iflistname[i]>100:#100 より大きい数値を検索listname[ i]*=0.8#0.8 を掛ける newlist.append(listname[i])#新しいリストに追加 print(newlist)
出力は次のとおりです。
[96.0,104.0,112.0,128.0,144.0,160.0]
リスト内包表記を使用します。
listname=[10,20,30,40,60,120,130,140,160,180,200]newlist=[i*0.8foriinlistnameifi>100]print(newlist)
出力結果:
[96.0,104.0,112.0,128.0,144.0,160.0]
この例の文法構造に基づいて分析してみましょう。
この方法は、複雑なリスト内包表記を使用するときに使用できます。最初にオブジェクトから条件を満たす要素 (条件文) を選択し、次に出力式を処理して、最後にそれらをリストに格納することがわかります。新しいリスト。
以下にいくつかの質問例を示しますので、試してみてください。
1. リスト [1,2,13,22,25]。リスト内包表記を使用して 10 より大きい数値を抽出し、各数値を 2 乗して、最後に出力してください。
実行結果は次のとおりです。
[169,484,625]
コードは次のとおりです。最初に参照の回答を完成させてみてください。
list=[1,2,13,22,25]newlist=[i*iforiinlistifi>10]print(newlist)
2. リスト内包表記を使用してリスト内の奇数をすべて見つけ、新しいリスト list= [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] を作成します。
コードは次のとおりです。
list=[1,2,3,4,5,6,7,8,9,10]newlist=[iforiinlistifi%2==1]print(newlist)
出力は次のとおりです。
[1,3,5,7,9]