40日間の入門pythonフルスタック(day-4)


きょうは待機する
python内部反復器アクセサリー
先日の質問pythonの公式ドキュメントを読む方法
python内蔵関数pythonのタイプ関数とクラス関数python文字列python正則紹介leetcode十題8つのソートアルゴリズム共通モジュールmap関数反復器とジェネレータ
文章を読んでいるうちにいいblogを見つけました.今日のこの内容の大部分はこの文章に由来しています.皆さんはこの文章に行って一つのことを勉強することができます.一般的にwhat、why、how
  • what
  • 反復器とジェネレータはそれぞれ何ですか
  • 反復可能オブジェクトとは何か、生成式
  • とは何か
  • 以上互いにどんな違いと連絡がありますか
  • よくあるpythonデータ型とクラス(list,dict,str,tuple)は何ですか
  • why
  • なぜ反復器とジェネレータ
  • があるのか
  • なぜ彼らを使ったのか
  • how
  • ジェネレータ
  • を作成する方法
  • 反復器と反復オブジェクトを区別する
  • をどのように判断するか
  • examples

  • 以下、質問への回答を順次示し、関連例を添付する.
    what?
  • 反復器とは何ですか.ジェネレータですか.
  • iteration(反復)コレクション要素へのアクセスの1つの方法
  • 反復器は、遍歴する位置
  • を記憶できることを特徴とするオブジェクトである.
  • 特徴:
  • 最初の要素から
  • へのアクセスを開始
  • 指定された順序に従ってのみ前方にアクセスでき、後方に後退することはできない
  • .
  • 反復器には2つの基本的な方法が含まれています
  • iter_():
  • next_():



  • list = [1,2,2,3] #       
    lst_iter = iter(list) #   ,  ,       iter()      
    print(type(lst_iter)) # lst_iter    list_iterator
    print("  next()          :")
    print(next(lst_iter))
    print(next(lst_iter)) #        
    print("     for      :")
    lst_iter = iter(list)
    for i in lst_iter: # for          
        print(i)
    
  • ジェネレータは反復器の一種であり、プログラムであり、一連のアルゴリズム
  • である.
  • ジェネレータは、反復器
  • のように表現される反復器を返す関数である.
  • はsend()およびnext()関数によってジェネレータ
  • を復元することができる.
  • 式を生成するとジェネレータが生成されます
  • ジェネレータは反復器を返す関数
  • である.
  • ジェネレータ式は反復と解析の組合せに由来する-これは式であるが反復可能なジェネレータ
  • である.
  • ジェネレータは1つのactive反復のみをサポートし、ジェネレータの反復器はジェネレータ自体
  • である.
    lst = [x*x for x in range(10)]
    lst_generator =(x*x for x in range(10)) #     ()     
    print(f'       :{lst},    :{type(lst)}')
    print(f'     :{lst_generator},    :{type(lst_generator)}')
    #      
    print(next(lst_generator))
    print(next(lst_generator))
    print(next(lst_generator))
    print(next(lst_generator))
    print(next(lst_generator))
    print(next(lst_generator))
    print(next(lst_generator))
    print(next(lst_generator))
    print(next(lst_generator))
    # print(next(lst_generator))
    try:
        print(next(lst_generator))
    except StopIteration:
        print('  ')
    #           ,           
    finally:
        print('-'*25)
        lst_generator =(x*x for x in range(10)) #     ()     
        #            StopIteration  
        #                          
        for x in lst_generator:
            print(x) # for        StopIteration  
    del(dict)
    

    IterableとIterator
  • すべてのジェネレータIteratorは反復可能なオブジェクトですが、Iterableは必ずしもIterator
  • ではありません.
  • の主な原因は、反復器が特定の機能を実行するアルゴリズムプログラム、すなわちその理論空間が無限で無限に反復可能であることを理解できることにある.
  • それは無限のデータストリームを表し、私たちの人為的な指定によって
  • を終了する.
  • 反復可能なオブジェクト、例えば(list,dict,str)は、私たちが与えた後、その値がこの時空内で固定される.
    したがって、
  • は反復可能な反復オブジェクトであるが、反復器
  • ではない.
  • typeタイプで
  • と判断できます
  • メソッドでiterが実装されているのは反復可能なオブジェクトであり、反復器のみがnextメソッドで
  • にアクセスできる.
  • 両者は含む関係
  • である.
  • すべてのジェネレータは反復器
  • です.
  • は、iter()によって反復器
  • に変えることができる.
  • は、1つのオブジェクトが反復可能オブジェクトであるか否かをisinstance()によって判断することができる
  • .
    #         
    from collections import Iterator
    from collections import Iterable
    #               
    lst = [1,2,3]
    st = set(lst)
    t = tuple(lst)
    dct = dict([('a',1),('b',1)])
    s = "Hello"
    a = 10
    ##       
    print('list       :{},list     :{}'.format(isinstance(lst,Iterable), isinstance(lst,Iterator)))
    print('set       :{},list     :{}'.format(isinstance(st,Iterable), isinstance(st,Iterator)))
    print('tuple       :{},list     :{}'.format(isinstance(t,Iterable), isinstance(t,Iterator)))
    print('dict       :{},list     :{}'.format(isinstance(dct,Iterable), isinstance(dct,Iterator)))
    print('string       :{},list     :{}'.format(isinstance(s,Iterable), isinstance(s,Iterator)))
    print('           :{},list     :{}'.format(isinstance(a,Iterable), isinstance(a,Iterator)))
    
  • 反復器の応用-フィボナッチ数列
  • def fibonacci(n):
        count, a, b = 0, 0, 1
        while count < n:
            yield b
            a,b = b,a+b
            count += 1
        return None
    h = fibonacci(10)
    
    print(h)
    print(next(h))
    for x in h:
        print(x)
    #     for       
    h_1 = fibonacci(6)
    print(next(h_1))
    print(next(h_1))
    print(next(h_1))
    print(next(h_1))
    print(next(h_1))
    print(next(h_1))
    #             
    try:
        print(next(h_1))
    except StopIteration as e:
        print("   :",e.value)
        
    

    アクセサリー
  • what
  • デコレーションは何ですか
  • 装飾器は何を飾りますか
  • 装飾器のいくつかの装飾方法
  • 装飾器のいくつかのタイプ
  • why
  • なぜ装飾品
  • を導入するのか

  • how
  • 装飾器はどのように動作しますか

  • オブジェクト/関数
    関数とは?
  • 関数はオブジェクトであり、pythonでは万物がオブジェクトであり、関数も例外ではなく、関数もオブジェクト
  • である.
  • 関数は、変数というオブジェクトを含むオブジェクト
  • である.
  • オブジェクトはクラスのインスタンス化(クラスはいくつかのオブジェクトが抽象的に定義されている)
  • である.
  • pythonのオブジェクトは関数のほかにリストがあり、文字列and so on
  • オブジェクトである以上、2つの基本的な性質を有する.
  • は、他のオブジェクト
  • に付与することができる.
  • は、別の関数内、すなわち変数として関数というオブジェクト内に定義することができる
  • .
    #             
    def func_():
        print("this's a function")
    func_copy = func_
    func_copy()
    func()
    print(func_copy is func_)
    print(id(func_),id(func_copy))
    
    #               
    def func_o (fc):
        print('out')
        fc() #    fc          
    def func_fc():
        print('       ')
    func_o(func_fc)
    print('*'*25)
    def fc_1():
        print('this is fc_1')
        return fc_2
    def fc_2():
        print('this is fc_2')
    fc_ = fc_1()
    fc_()
    #                
    # fc_() = fc_1(fc_2())
    

    関数の実行順序はfunc_です.o(伝達を受けるパラメータfunc_fc(実パラメータ)、fcはパラメータ)->funcを呼び出すfc()実行
    関数のネストと閉パッケージ
  • ネスト
  • func_outerの内部にはfuncが定義されていますinner関数
  • func_outerの役割ドメインにはfunc_が含まれるべきですInnerの役割ドメイン
  • 宣言された1つの関数の内部でまた1つの関数
  • を宣言する
  • 閉パッケージ
  • が返す関数オブジェクトは、1つの関数オブジェクトだけでなく、その関数の外に作用ドメインを包むので、この関数がどこで呼び出されても、自分の外層ラップの作用ドメイン
  • を優先的に使用することができる.
  • 用途*******?
  • 保存関数はブレークポイント
  • を返す.
  • 外部作用域の局所変数から異なる結果を得る
  • .

    def func_outer():
        a = "Here is in the func_outer but out of func_inner"
        print(a)
        def func_inner():
            b = "Here is in the func_inner"
            print(b)
            c = 'but i can use out variation
    '
    + a print(c) return func_inner() f = func_outer print(f()) # func_inner() #
    def add_out(o_num):
        def add_inner(i_num):
            return o_num + i_num
        return add_inner
    res_fc1 = add_out(12)
    res_fc2 = add_out(18)
    print(res_fc1(100))
    print(res_fc2(100))
    #          100          
    #          
    #               
    

    python内蔵関数
  • 数学演算
  • len(object,/):コンテナ変数内の要素数(文字列内の単一文字の長さを含む)
  • を返します.
  • max(iterable, *[,default = obj, key = func]) ->value
  • pow
  • round
  • sum
  • abs
  • divmod
  • complex
  • hash
  • id

  • 論理演算
  • all
  • any

  • 進変換
  • ascii
  • bin
  • oct
  • hex


  • タイプ関数
  • bool()
  • bytes()
  • str()
  • chr()
  • ord()
  • dict()
  • set()
  • list()
  • tuple
  • object()
  • int()
  • float()
  • frozenset()
  • range()
  • slice()
  • type()
  • zip()

  • クラスオブジェクトおよび属性
  • classmethod
  • delattr()
  • dir()
  • getattr()
  • hasattr()
  • isinstance()
  • issubclass()
  • property()
  • super()
  • callable()