Python:コレクション、パート3/4:コレクションの結合、要素の追加と削除

パート1 パート2 パート3 パート4
画像 Pythonでは、標準コレクション(コレクションモジュールは考慮されていません)を使用する一般的な原則を引き続き検討します。 コレクションを結合および更新する方法と、新しいコレクションを作成する方法、またはオリジナルを変更する方法、および変更可能なコレクションのアイテムを追加および削除する方法を検討します。



対象者:Pythonを研究しており、コレクションの初期アイデアを既に持っており、それらを使用して作業している人、知識を体系化して深めたい人は、それらを完全なイメージに入れてください。



目次:



  1. ソースを変更せずに文字列、タプル、リスト、辞書を組み合わせます。
  2. ソースを変更せずにセットを結合します。
  3. リスト、辞書、および可変セットと元のコレクションの変更を組み合わせます。
  4. 可変コレクションの要素を追加および削除します。
  5. 可変および不変のコレクションを操作する機能。


1.ソースを変更せずに文字列、タプル、リスト、辞書を組み合わせる



元のコレクションを変更せずに文字列、タプル、リスト、辞書を結合する方法を考えてみましょう-複数のコレクションから、元のコレクションを変更せずに同じタイプの新しいコレクションが作成される場合。



  1. 文字列とタプルの組み合わせは 、加算演算子「+」を使用して可能です



    str1 = 'abc' str2 = 'de' str3 = str1 + str2 print(str3) # abcde tuple1 = (1, 2, 3) tuple2 = (4, 5) tuple3 = tuple1 + tuple2 print(tuple3) # (1, 2, 3, 4, 5)
          
          





  2. リスト (リスト)を結合するには、元のリストを変更せずに3つのオプションが可能です。



    • 2番目のリストのすべての要素を最初のリストの要素に追加します(.extend()メソッドに似ていますが、元のリストを変更しません)。



       a = [1, 2, 3] b = [4, 5] c = a + b print(a, b, c) # [1, 2, 3] [4, 5] [1, 2, 3, 4, 5]
            
            





    • 元のリストを変更せずに2番目のリストを1つの要素として追加します(.append()メソッドに似ていますが、元のリストを変更しません)。



       a = [1, 2, 3] b = [4, 5] c = a + [b] print(a, b, c) # [1, 2, 3] [4, 5] [1, 2, 3, [4, 5]]
            
            





  3. UPD: longclapsによってコメントに追加されたメソッド:



     a, b = [1, 2, 3], [4, 5] c = [*a, *b] #     3.5   print(c) # [1, 2, 3, 4, 5]
          
          





  4. 辞書 (dict)を使用すると、すべてが非常に単純ではありません。



    3番目の演算子を取得するために2つの辞書を追加します+ Pythonは「TypeError:unsupported operand type(s)for +: 'dict' and 'dict'」を許可しません。



    これは、.copy()および.update()メソッドを組み合わせることにより、異なる方法で実行できます。



     dict1 = {'a': 1, 'b': 2} dict2 = {'c': 3, 'd': 4} dict3 = dict1.copy() dict3.update(dict2) print(dict3) # {'a': 1, 'c': 3, 'b': 2, 'd': 4}
          
          





    Python 3.5には、より洗練された新しい方法があります。



     dict1 = {'a': 1, 'b': 2} dict2 = {'c': 3, 'd': 4} dict3 = {**dict1, **dict2} print(dict3) # {'a': 1, 'c': 3, 'b': 2, 'd': 4}
          
          





2.ソースを変更せずにセットを結合



両方のタイプのセット(セット、フリーズセット)について、セットのさまざまな組み合わせが可能です(元のセットは変更されず、新しいセットが返されます)。



画像






 #     (    ) a = {'a', 'b'} b = { 'b', 'c'} #   b  
      
      





  1. 連合



     c = a.union(b) # c = b.union(a)     # c = a + b #    +   # TypeError: unsupported operand type(s) for +: 'set' and 'set' c = a | b #     print(c) # {'a', 'c', 'b'}
          
          





  2. 交差点



     c = a.intersection(b) # c = b.intersection(a)     c = a & b #     print(c) # {'b'}
          
          





    一度に2セット以上の交差:

     a = {'a', 'b'} b = { 'b', 'c'} c = { 'b', 'd'} d = a.intersection(b, c) #    d = set.intersection(a, b, c) #    ( ) print(d) # {'b'}
          
          





  3. -結果は、どのセットから減算するかによって異なります。



     c = a.difference(b) # c = a - b        print(c) # {'a'} c = b.difference(a) # c = b - a        print(c) # {'c'}
          
          





  4. 対称差 (symmetric_difference)これは交差とは反対の一種の操作です-交差しない、つまり、すべてが同じではない要素を両方のセットから選択します。



     c = b.symmetric_difference(a) # c = a.symmetric_difference(b) #     c = b ^ a #      print(c) # {'a', 'c'}
          
          





3.リスト、辞書、および可変セットと元のコレクションの変更を組み合わせます



  1. リストについて



    • 最初のリストを変更する方法で、2番目のリストのすべての要素を最初のリストの要素に追加します。 拡張 ():



       a.extend(b) # a += b  a.extend(b) print(a, b) # [1, 2, 3, 4, 5] [4, 5]
            
            





    • メソッドによる最初のリストの変更とともに、2番目のリストを1つの要素として追加します。 追加 ():



        a.append(b) # a += [b]  a.append(b) print(a, b) # [1, 2, 3, [4, 5]] [4, 5]
            
            



  2. 別の辞書の要素を追加して辞書を変更するには、メソッドを使用します。 更新 ()。



    注:一致する辞書キーについては、値が更新されます。



     dict1 = {'a': 1, 'b': 2} dict2 = {'a': 100, 'c': 3, 'd': 4} dict1.update(dict2) print(dict1) # {'a': 100, 'c': 3, 'b': 2, 'd': 4}
          
          





  3. 可変セット (セット)の場合、前のセクションで説明した操作に加えて、それらの類似物も可能ですが、元のセットが変更されており、これらのメソッドは_updateで終わります。 結果は、更新される数によって異なります。



    • difference_update ()



       a = {'a', 'b'} b = { 'b', 'c'} a.difference_update(b) print(a, b) # {'a'} {'b', 'c'} a = {'a', 'b'} b = { 'b', 'c'} b.difference_update(a) print(a, b) # {'a', 'b'} {'c'}
            
            





    • intersection_update ()



       a = {'a', 'b'} b = { 'b', 'c'} a.intersection_update(b) print(a, b) # {'b'} {'b', 'c'} a = {'a', 'b'} b = { 'b', 'c'} b.intersection_update(a) print(a, b) # {'b', 'a'} {'b'}
            
            





    • symmetric_difference_update ()



       a = {'a', 'b'} b = { 'b', 'c'} a.symmetric_difference_update(b) print(a, b) # {'c', 'a'} {'c', 'b'} a = {'a', 'b'} b = { 'b', 'c'} b.symmetric_difference_update(a) print(a, b) # {'a', 'b'} {'c', 'a'}
            
            





    4編集可能なコレクションアイテムの追加と削除



    コレクションへの要素の追加と削除は、変更可能なコレクションでのみ可能です:リスト(リスト)、セット(セットのみで、frozensetではなく)、辞書(dict)。 さらに、インデックス付きコレクションであるリストの場合、要素を追加する位置も重要です。



    画像



    注:



    • .insert(index、element)メソッドの使用例
       my_list = [1, 2, 3] my_list.insert(0, 0) # index = 0 -    print(my_list) # [0, 1, 2, 3] my_list.insert(10, 4) #      -     print(my_list) # [0, 1, 2, 3, 4] my_list.insert(-10, -1) #       -    print(my_list) # [-1, 0, 1, 2, 3, 4] my_list = [1, 2, 3] my_list.insert(1, 1.5) #   1  2 (  !) #        ,        #     -   1   print(my_list) # [1, 1.5, 2, 3]
            
            





    • del演算子の使用例
       #    my_list = [1, 2, 3, 4, 5, 6, 7] del my_list[1] #     print(my_list) # [1, 3, 4, 5, 6, 7] del my_list[-3:-1] #     print(my_list) # [1, 3, 4, 7] # del my_list[10] # IndexError: list assignment index out of range #    my_dict = {'a': 1, 'b': 2, 'c': 3} del my_dict['b'] print(my_dict) # {'a': 1, 'c': 3} # del my_dict['z'] # KeyError     
            
            





    • スライスリストアイテムの削除と追加については、2番目の記事で説明します



    • .append()および.extend()の動作例は、この記事の第3章で説明します


    5変更可能なコレクションと変更不可能なコレクションを使用した作業の機能



    1. 文字列は不変のコレクションです-変更した場合、新しいオブジェクトを作成します!



       str1 = 'abc' print(str1, id(str1)) # abc 140234080454000 str1 += 'de' print(str1, id(str1)) # abcde 140234079974992 -   ,   id!
            
            





      最初は同じ2行のサンプルコード。



       str1 = 'abc' str2 = str1 print(str1 is str2) # True -         ! str1 += 'de' #   str1    ! print(str1 is str2) # False -     ! print(str1, str2) # abcde abc -  
            
            





    2. リストは変更可能です。ここでは、重大な間違いをしないように非常に注意する必要があります。 この例を、上の行の例と比較してください。



       list1 = [1, 2, 3] list2 = list1 print(list1 is list2) # True -         ! #   ,   : list1 += [4] print(list1, list2) # [1, 2, 3, 4] [1, 2, 3, 4] #    ,        !
            
            





      また、個別に作業できる独立したコピーが必要な場合は?



       list1 = [1, 2, 3] list2 = list(list1) #    list3 = list1[:] #    list4 = list1.copy() #    -   Python 3.3+ print(id(list1), id(list2), id(list3), id(list4)) #  4 id ,      4   list1 += [4] #    print(list1, list2, list3, list4) # [1, 2, 3, 4] [1, 2, 3] [1, 2, 3] [1, 2, 3] #     -   ,     
            
            



    パート1 パート2 パート3 パート4

    ディスカッションに招待します。



    • 私がどこかで間違えたか、重要なことを考慮しなかった場合-コメントを書いてください。重要なコメントは、著者名を示す記事の後半に追加されます。
    • 明確でない点があり、説明が必要な場合は、コメントに質問を書いてください。または、私または他の読者が答えを出すと、答えのある実用的な質問が後で記事に追加されます。



All Articles