Python【基礎第三編】

10630 ワード

setコレクション
s 1=set()集合の特徴:
  • アクセス速度が速い
  • 重複なし
  • collectionsシリーズ(データ型コンテナモジュール)
    一、カウンタ(Counter)
    Counterは辞書タイプの補完であり,値の出現回数を追跡するために用いられる.
    import collectionsインポートモジュール例:
    import collections
    obj=collections.Counter("aaafffefwifewfewf")
    print(obj)
    Counter({'f': 7, 'a': 3, 'w': 3, 'e': 3, 'i': 1})

    二、秩序辞書(OrderedDict)
    orderdDictは辞書タイプの補足であり、辞書要素が追加された順序例を覚えています.
    import collections
    dic=collections.OrderedDict()
    dic['k1']='v1'
    dic['k2']='v2'
    dic['k3']='v3'
    print(dic)
      :OrderedDict([('k1', 'v1'), ('k2', 'v2'), ('k3', 'v3')])

    三、デフォルト辞書(defaultdict)
    defaultdictは辞書のタイプを補完し、辞書の値にデフォルトでタイプを設定します.
    四、命名可能なメタグループ(namedtuple)
    nametupleに基づいてtupleのすべての機能とその他の機能を含むタイプの例を作成できます.
    import collections
    MytupleClass=collections.namedtuple('MytupleClass',['x','y','z'])
    obj=MytupleClass(11,22,33)
    print(obj.x)
    print(obj.y)
    print(obj.z)
      :11
    22
    33

    双方向キュー
    スレッドの安全な双方向キュー
    例:
    import collections
    d=collections.deque()
    d.append('1')
    d.appendleft('0')
    d.appendleft('1')
    print(d)
    r=d.count('1')
    print(r)
      :
    deque(['1', '0', '1'])
    2

    深浅コピーの原理
    文字列と数値の場合、割り当て、浅いコピー、および深いコピーは、同じメモリアドレスを常に指すため、意味がありません.
    深いコピー
    メモリにすべてのデータを再作成する(最後のレイヤ、すなわちpython内部の文字列と数字の最適化を除外する)copy.copy()
    浅いコピー
    メモリに第1層のデータcopyのみを追加作成する.deepcopy()
    関数#カンスウ#
    一、背景
    関数式プログラミングとプロセス向けプログラミングの違い:
  • 関数式:ある機能コードを関数にカプセル化し、後日繰り返し書く必要がなく、関数のみを呼び出すことができる
  • オブジェクト向け:関数の分類とカプセル化により、「より速く、より強く...」

  • 関数プログラミングで最も重要なのは、コードの再利用性と可読性を向上させることです.
    二、定義と使用
    def    (  ):
          
        ...
           
        ...

    関数の定義には、主に次のようなポイントがあります.
  • def:関数を表すキーワード
  • 関数名:関数の名前、後日関数名に基づいて関数
  • を呼び出す
  • 関数体:関数では、メールの送信、[12,22,38888,2]の最大数の算出など、一連の論理計算が行われる.
  • パラメータ:関数体にデータを提供
  • 戻り値:関数の実行が完了すると、呼び出し元にデータを返すことができます.

  • 上記のポイントでは、パラメータと戻り値が重要です.
    1、戻り値
    関数は、実行が成功したかどうか、呼び出し元に値を返す必要がある機能ブロックです.
    def     ():
          
               ...
      
        if     :
            return True
        else:
            return False
      
      
    while True:
          
        #           ,           result
        #   ,    result    ,      
      
        result =     ()
        if result == False:
                ,      ...

    2、パラメータ
  • パラメータなし
  • パラメータあり
  • 一般パラメータ
  • デフォルトパラメータ
  • ダイナミックパラメータ

  • 一般的なパラメータの例:(argvは関数mailのパラメータであり、1と2はmailのものである)
    def mail(argv):
        n=123
        n+=argv
        print(n)
    
    mail(1)
    mail(2)
      :124
    125

    デフォルト・パラメータの例:(注意:デフォルト・パラメータはパラメータ・リストの最後に配置する必要があります)
    def mail(argv1,argv2=10):
        n=123
        n+=argv1
        n+=argv2
        print(n)
    
    mail(1,2)
    mail(1)
      :126
    134

    パラメータの指定例:(パラメータの値を指定)
    def show(a1,a2):
        print(a1,a2)
    
    show(a2=123,a1=999)
      :999 123

    動的パラメータ例1:(*argsは実パラメータを1つのシーケンスとして処理し、**argsは実パラメータを1つの辞書として処理する)
    def show(*args,**args2):
        print(args,type(args))
        print(args2,type(args2))
    
    show(11,22,33,44,a1='aaa',b1='bbb')
      :(11, 22, 33, 44) <class 'tuple'>
    {'a1': 'aaa', 'b1': 'bbb'} <class 'dict'>

    ダイナミックパラメータの例2:(パラメータを実パラメータと同じタイプで受信する場合は、実パラメータの前に*または**を追加する必要があります.そうしないと、実パラメータは1つのメタグループとして処理されます)
    def show(*args,**args2):
        print(args,type(args))
        print(args2,type(args2))
    e=[11,22,33,44]
    f={'a1':'aaa','b1':'bbb'}
    show(e,f)
    print("==================")
    show(*e,**f)
      :
    ([11, 22, 33, 44], {'a1': 'aaa', 'b1': 'bbb'}) <class 'tuple'>
    {} <class 'dict'>
    ==================
    (11, 22, 33, 44) <class 'tuple'>
    {'a1': 'aaa', 'b1': 'bbb'} <class 'dict'>

    Lambda式
    Lambdaの存在意義は、単純な関数の簡潔な表現例です.
    func=lambda a:a+1
    ret=func(99)
    print(ret)
      :100
    1、      a
    2、    ,a+1,    return

    組み込み関数
    公式サイト
    Open関数
    この関数はファイル処理に使用されます.
    f=open('test.log','w',encoding='utf-8')
    f.write('123456') # 123456    test.log
    f.close()
    
    f=open('test.log','r',encoding='utf-8')
    print("==========")
    print(f.read()) #    test.log
    f.close()
    
    f=open('test.log','r',encoding='utf-8')
    f.seek(1) #        
    print("==========")
    print(f.tell()) #        
    print(f.read(2)) #      
    print(f.tell()) #        
    f.close()
      :==========
    123456
    ==========
    1
    23
    3