Python:コレクション、パート1/4:分類、一般的なアプローチと方法、変換

パート1パート2パート3パート4
Pythonのコレクションは、1つまたはさまざまなタイプの値のセットを格納するプログラムオブジェクト(コンテナー変数)であり、これらの値にアクセスしたり、コレクションのタイプに依存する特別な関数やメソッドを適用したりできます。

コレクションを勉強する際の一般的な問題は、各タイプをある程度詳細に分析した後、通常、全体像の説明に十分な注意が払われず、タイプ間の明確な類似性と違いが得られないことです。 。

これはまさにこのシリーズの記事で解決しようとしている問題です-トレーニング資料で通常示されているように、異なるタイプのコレクションを比較するのではなく、異なるタイプのコレクションを比較してPythonで標準コレクションを操作するためのいくつかのアプローチを検討します。 さらに、初心者に困難や間違いを引き起こすいくつかのポイントに触れてみます。

誰のために Pythonを勉強していて、コレクションの初期アイデアをすでに持っており、彼らと協力し、体系化して知識を深めたい人のために、それらを完全なイメージに入れてください。

Python 標準の組み込みコレクションデータ型を検討します:リスト(リスト)、タプル(タプル)、文字列(ストリング)、セット(セット、フローズンセット)、辞書(辞書)。 collectionsモジュールからのコレクションは考慮されませんが、記事の多くはそれらの操作に適用できるはずです。

目次:


  1. コレクションの分類。
  2. コレクションを操作するための一般的なアプローチ。
  3. コレクションの一部の一般的な方法。
  4. コレクションを変換します

1.コレクションの分類


画像

画像


用語の説明:


インデックス付け -コレクションの各要素には独自のシリアル番号-インデックスがあります。 これにより、序数のインデックスで要素にアクセスし、スライス(「スライス」)を実行できます。インデックスに基づいて選択することでコレクションに参加できます。 これらの問題については、別の記事で詳しく説明します。

一意性 -コレクションの各要素は、その中に1回だけ見つかります。 これにより、使用されるデータ型が各要素に対して変更されないという要件が生じます。たとえば、リストをそのような要素にすることはできません。

コレクションの可変性 -コレクションに新しいメンバーを追加したり、コレクションの作成後にそれらを削除したりできます。

辞書に関する注(dict):



2コレクションを操作するための一般的なアプローチ


分類を理解したら、タイプに関係なく標準コレクションでできることを検討してください(例ではリストと辞書ですが、これは考慮される他のすべての標準タイプのコレクションで機能します)。

 #      (   ): my_list = ['a', 'b', 'c', 'd', 'e', 'f'] my_dict = {'a': 1, 'b': 2, 'c': 3, 'd': 4, 'e': 5, 'f': 6} 

2.1 print ()関数を使用したコレクション要素の印刷


 print(my_list) # ['a', 'b', 'c', 'd', 'e', 'f'] print(my_dict) # {'a': 1, 'c': 3, 'e': 5, 'f': 6, 'b': 2, 'd': 4} #  ,        . 

2.2 len ()関数を使用してコレクション内のメンバーの数を数える


 print(len(my_list)) # 6 print(len(my_dict)) # 6 -    -   . print(len('ab c')) # 4 -     1  

2.3 in演算子を使用してこのコレクションの要素の所有権を確認する


x in s-アイテムがコレクションsにある場合はTrueを返し、そうでない場合はFalseを返します
非所有権をチェックするオプションもあります。xはsにありません。実際には、前の式のブール値の前に否定だけが追加されます。

 my_list = ['a', 'b', 'c', 'd', 'e', 'f'] print('a' in my_list) # True print('q' in my_list) # False print('a' not in my_list) # False print('q' not in my_list) # True 

辞書のオプションは、以下のコードから明らかです。

 my_dict = {'a': 1, 'b': 2, 'c': 3, 'd': 4, 'e': 5, 'f': 6} print('a' in my_dict) # True -       print('a' in my_dict.keys()) # True -    print('a' in my_dict.values()) # False -   '' — ,   print(1 in my_dict.values()) # True 

カップルを確認できますか? できます!

 print(('a',1) in my_dict.items()) # True print(('a',2) in my_dict.items()) # False 

文字列の場合、1文字だけでなく部分文字列も検索できます。

 print('ab' in 'abc') # True 

2.4 for inループですべてのコレクションアイテムをバイパスする


この場合、コレクションの要素は、すべての要素が列挙されるまでループを順番にループします。

 for elm in my_list: print(elm) 

次の点に注意してください。



2.5関数min ()、 max ()、 sum ()



 print(min(my_list)) # a print(sum(my_dict.values())) # 21 

3部品コレクションの一般的な方法


同じタイプの問題を解決するために、コレクションタイプの多くのメソッドが複数のコレクションで使用されます。
画像

UPD:3番目の記事の重要な追加: 可変コレクションへのアイテムの追加と削除

メソッドと例の説明:



セットを比較するための特別な方法(set、frozenset)



 set_a = {1, 2, 3} set_b = {2, 1} #    ! set_c = {4} set_d = {1, 2, 3} print(set_a.isdisjoint(set_c)) # True -    print(set_b.issubset(set_a)) # True - set_b    set_a,  set_b -  print(set_a.issuperset(set_b)) # True - set_b    set_a,  set_a -  

セットが等しい場合、それらは同時にサブセットとスーパーセットの両方になります。
 print(set_a.issuperset(set_d)) # True print(set_a.issubset(set_d)) # True 

4あるタイプのコレクションを別のタイプに変換する


課題に応じて、あるタイプのコレクションを別のタイプのコレクションに変換できます。 このため、原則として、あるコレクションを別のコレクションを作成する機能に転送するだけで十分です(上記の表にあります)。

 my_tuple = ('a', 'b', 'a') my_list = list(my_tuple) my_set = set(my_tuple) #     ! my_frozenset = frozenset(my_tuple) #     ! print(my_list, my_set, my_frozenset) # ['a', 'b', 'a'] {'a', 'b'} frozenset({'a', 'b'}) 

あるコレクションを別のコレクションに変換すると、データが失われる可能性があることに注意してください。



追加の詳細:



:最も強力で柔軟な方法-コレクションジェネレーターは、サイクルの4番目の部分で個別検討さます。これは、詳細な分析にほとんど焦点を当てず、必要とするニュアンスやユースケースが多いためです。

UPD: コメントの ShashkovSは、コレクションの操作のアルゴリズムの複雑さに関する重要で有用な情報へのリンクを投稿しました。
パート1パート2パート3パート4

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


Source: https://habr.com/ru/post/J319164/


All Articles