forループに飽きたので、リスト生成式を試してみましょう.

9901 ワード

プログラムを作成したり、他の人のプログラムを表示したりするとき、リスト生成式に遭遇することがよくあります.これは複雑ではありませんが、コードをより簡潔で柔軟にするのに役立ちます.多くのpythonユーザーはあまり使用しません.ここでは、リスト生成式とジェネレータ式の使用について詳しく説明します
 
一、リスト生成式
利点:1行のコードで必要なリストをほとんど解決できます.
欠点:夢中になりやすく、間違いを並べにくく、3つのサイクルを超えてはいけない.
  • リスト導出式で構築可能な任意のリストは、forループ
  • のような他のもので構築することができる.
  • リスト導出式は、最大3つのforサイクルを超えない.判断は1つの
  • しか使えない
     
    1.ループモード:テンプレート:[加工されたi for i in反復可能オブジェクト]
    forループメソッドの使用
    li = []
    for i in range(1,4):
        li.append('     '+str(i)+' ')
    
    print(li)                   #['     1 ', '     2 ', '     3 ']

    二番目の書き方
    li = []
    for i in range(1,4):
        li.append('     %s ' % i)
    
    print(li)

    上のコードは、1行でできます.リストで式を導くといいです
    li = ['     %s ' %i for i in range(1,4)]
    print(li)
    
    li = ['     {} '.format(i) for i in range(1,4)]         #       
    print(li)

    例:1~10平方の結果を求める
    li = [i ** 2 for i in range(1,11)]
    print(li) 
        :[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]

    2.フィルタモード:[加工されたi for i in反復可能オブジェクトif条件フィルタ]
    30      3    
    l3 = [i for i in range(1,31) if i % 3 == 0]
    print(l3)                                 # [3, 6, 9, 12, 15, 18, 21, 24, 27, 30]
    30      3       
    li = [i**2 for i in range(1,31) if i % 3 == 0]
    print(li)                                 # [9, 36, 81, 144, 225, 324, 441, 576, 729, 900]
                 'e'     
    names = [['Tom', 'Billy', 'Jefferson', 'Andrew', 'Wesley', 'Steven', 'Joe'],['Alice', 'Jill', 'Ana', 'Wendy', 'Jennifer', 'Sherry']]
    l4 = [name for i in names for name in i if name.count('e') == 2 ]
    print(l4)                                 # ['Jefferson', 'Wesley', 'Steven', 'Jennifer']

    よく使われるのはリスト導出式です
     
    ディクショナリガイド
    辞書のkeyとvalueを合わせる
    dict = {'a': 10, 'b': 34}
    dict_frequency = {dict[k]: k for k in mcase}
    print(dict_frequency) 
        :{10: 'a', 34: 'b'}

    に相当
    dict = {'a': 10, 'b': 34}
    dict_frequency = {}
    for k in dict:
        dict_frequency[k]=dict[k]
    
    print(dict_frequency) 
      Key value    ,        

    しゅうごうゆうどうしき
    リスト内の各値の平方を計算し、重量除去機能を持参する
    squared = {x**2 for x in [1, -1, 2]}
    print(squared)
        :{1, 4}
    a = {1,1,4}
    print(type(a)) 
             ,    {}   。

    集合と辞書には違いがあります.
    キー値のペアは、辞書です.たとえば{'k 1':1,'k 1':2}
    キー値のペアがないのは、{1,2,3,4}のような集合です.
     
    二、ジェネレータ式
    リスト導出式と同様に、[]を()に変更するだけです.
    l_obj = ('     %s ' % i for i in range(1,4))
    print(l_obj)
     at 0x000002DDBEBADE60>

    値取得使用_next__方法
    l_obj = ('     %s ' % i for i in range(1,4))
    
    print(l_obj.__next__())
    print(l_obj.__next__())
    print(l_obj.__next__())
        :
         1 
         2 
         3 

    リストの導出:一目瞭然、メモリの占有
    ジェネレータ式:メモリを節約するために表示できません.