Python プログラミング - タプル、セット、辞書

タプルを使用して要素の固定リストを保存し、コレクションを使用して一意の要素を保存して迅速にアクセスし、辞書を使用してキーと値のペアを保存し、これらのキーワードを使用して要素に迅速にアクセスできます。

1.タプル

        タプルはリストに似ていますが、タプル内の要素は固定されています。つまり、タプルを作成した後は、タプル内の要素を追加、削除、置換、並べ替えることはできません

        リストの内容をアプリケーションで変更する必要がない場合は、タプルを使用して、要素が誤って追加、削除、または置換されるのを防ぐことができます。タプルはリストとよく似ていますが、要素が固定されている点が異なります。さらに、Python の実装により、タプルはリストよりも効率的です

        タプルは、要素を一対のかっこで囲むことによって作成できます。これらの要素はカンマで区切られます。次の例に示すように、空のタプルを作成することも、リストからタプルを作成することもできます。

t1 = () # Create an empty tuple
t2 = (1,3,5) # Create a tuple with three el ements
# Create a tuple from a list
t3 = tup1e([2 * x for x in range(1, 5)])

        文字列からタプルを作成することもできます。文字列内の各単語がタプルの要素になります。例えば:

# Create a tuple from a string
t4 = tuple("abac") # t4 is ['a'. 'b', 'a'. 'c']

        タプルはシーケンスです表 10-1 のシーケンスに対する一般的な操作は、タプルにも使用できます。タプルでは、​​len、min、max、sum 関数を使用できます。for ループを使用してタプルのすべての要素を反復処理し、添え字演算子を使用してタプル内の対応する要素または要素セグメントにアクセスできます。in 演算子と not in 演算子を使用して要素がタプル内にあるかどうかを判断し、比較演算子を使用してタプル内の要素を比較できます。

「タプルの要素が固定されている」とは、タプルに要素を追加、削除、置換できないこと、またはタプル内の要素を中断できないことを意味します

: タプルには、要素の固定リストが含まれています。タプル内の個々の要素は変更可能である場合があります。たとえば、次のコードは円のタプルを作成し (2 行目)、最初の円の半径を 30 に変更します (3 行目)。

>>> from CircleFromGeometricObject import Circle
>>> circles = (Circle(2), Circle(4), Circle(7))
>>> circles[0].setRadius(30)
>>> circles[0].getRadius()
>>> 30
>>>

        この例では、タプル内の各要素は円オブジェクトです。タプル内の円オブジェクトを追加、削除、または置換することはできませんが、円オブジェクトは可変であるため、円の半径を変更することはできます。タプルに不変オブジェクトが含まれている場合、タプルは不変であると言われますたとえば、数値のタプルや文字列のタプルは不変です。

2、コレクション

キー ポイント: セットは、要素のコレクションを保存するために使用できるという点でリストに似ています。ただし、リストとは異なり、セット内の要素は繰り返されず、特定の順序で配置されません。

アプリケーションが要素の順序を気にしない場合は、リストを使用するよりもコレクションを使用して要素を保存する方が効率的です。
 

2.1. コレクションの作成

        要素を中括弧 ( { } ) で囲むことにより、要素のコレクションを作成できます。コレクション内の要素はカンマで区切られます。次の例に示すように、空のセットを作成することも、リストまたはタプルからセットを作成することもできます。

s1 = set() # Create an empty set
s2 = {1, 3, 5} # Create a set with three e lements
s3 = set((1, 3, 5)) # Create a set from a tuple
# Create a set from a list
s4 = set([x * 2 for x in range(1, 10)])

        同様に、構文 list(set) または tuple(set) を使用して、セットからリストまたはタプルを作成できます。

        文字列からコレクションを作成することもできます。文字列内の各文字はセット内の要素になります。

例えば:

# Create a set from a string
s5 = set("abac") # s5 is {'a','b','c'}

注: 文字 a は文字列内に 2 回現れますが、重複した要素は set に格納されないため、set 内に現れるのは 1 回だけです

        コレクションには、同じタイプまたは異なるタイプの要素を含めることができます。例: s= {1,2,3,"one","two","three"} は、数値と文字列を含むセットです。コレクション内の各要素はハッシュ可能である必要があります。Python のすべてのオブジェクトにはハッシュ値があり、オブジェクトの存続期間中にハッシュ値が変更されない場合、オブジェクトはハッシュされます。これまでに紹介したオブジェクトはリストを除いてすべてハッシュ可能です。

2.2. 操作とアクセス収集

        add(e) メソッドまたはremove(e) メソッドを使用して、コレクションに要素を追加したり、コレクションから要素を削除したりできます。関数 len、min、max、sum を使用してセットを操作したり、for ループを使用してセット内のすべての要素を走査したりできます。

        in または not in 演算子を使用して、要素がセット内にあるかどうかを判断できます。

注: コレクションに存在しない要素を削除すると、remove(e) メソッドは KeyError 例外をスローします

2.3. サブセットとスーパーセット

セット s1 のすべての要素がセット s2 にある場合、s1 は s2 のサブセットであると言われます。次のコードに示すように、s1.issubset(s2)メソッドを使用して、s1 が s2 のサブセットであるかどうかを判断できます。

>>> s1={1,2,4}
>>> s2={1,4,5,2,6}
>>> s1.issubset(s2) # s1 is a subset of s2
True
>>>

集合 s2 内の要素が集合 s1 にもある場合、集合 s1 は集合 s2 のスーパーセットであると言われます。次のコードに示すように、s1.issuperset(s2)メソッドを使用して、s1 が s2 のスーパーセットであるかどうかを判断できます。

>>> s1={1,2,4}
>>> s2={1,4,5,2,6}
>>> s2.issuperset(s1) # s2 is a superset of s1
True
>>>

2.4. 同等性テスト

        演算子==および!=を使用して、2 つのセットに同じ要素が含まれているかどうかを検出できます。例えば:

>>> s1={1,2,4}
>>> s2={1,4,2}
>>> s1==s2
True
>>> s1 != s2
False
>>>

この例では、s1 と s2 の要素の順序は異なりますが、2 つのセットには同じ要素が含まれています。

注: コレクション内の要素は順序付けされていないため、従来の比較演算子 (>、>=、<=、および <) を使用してコレクションを比較することは意味がありません。ただし、これらの演算子はセットで使用される場合に特別な意味を持ちます。

  • s1 が s2 の適切なサブセットである場合、s1<s2 は True を返します。
  • s1 が s2 のサブセットである場合、s1<=s2 は True を返します。
  • s1 が s2 の真のスーパーセットである場合、s1>s2 は True を返します。
  • s1 が s2 のスーパーセットの場合、s1>=s2 は True を返します。

        注: s1 が s2 の適切なサブセットである場合、s1 のすべての要素は s2 にもありますが、s2 には s1 にない要素が少なくとも 1 つあります。s1 が s2 の適切なサブセットである場合、 s2 は s1 の適切なスーパーセットになります

2.5. 集合演算

Python は、和集合、交差集合、差集合、対称差集合の演算メソッドを提供します。

2 つのセットの和集合は、両方のセットのすべての要素を含むセットです。この操作を実行するには、 unionメソッドまたは 演算子を使用できます例えば:

>>> s1={1,2,4}
>>> s2={1,3,5}
>>> s1.union(s2)
{1,2,3,4,5}
>>>
>>> s1 | s2
{1,2,3,4,5}
>>>

2 つのセットの共通部分は、両方のセットに共通の要素を含むセットです。この操作を実行するには、交差メソッドまたは & 演算子を使用できます。例えば:

>>> s1={1, 2, 4}
>>> s2={1, 3, 5}
>>> s1.intersection(s2)
{1}
>>>
>>> s1 & s2
{1}
>>>

set1 と set2 の差分セットは、set1 には表示されるが set2 には表示されない要素を含むセットです。この操作を実行するには、differenceメソッドまたは-演算子を使用できます。例えば:

>>> s1={1,2,4}
>>> s2={1,3,5}
>>> sl.difference(s2)
{2,4}
>>>
>>> s1 - s2
{2,4}
>>

        2 つのセット間の対称差分セット (または排他的論理和) は、共通する要素を除く 2 つのセット内のすべての要素を含むセットです。この操作を実行するには、 metric_differenceメソッドまたは^演算子を使用できます
例えば:

>>> s1={1, 2, 4}
>>> s2={1, 3, 5}
>>> s1.symmetric_difference(s2)
{2,3,4,5}
>>>
>>> s1 ^ s2
{2,3,4,5}
>>>

注: これらの set メソッドは結果コレクションを返しますが、これらのコレクション内の要素は変更しません

3. セットとリストのパフォーマンスを比較する

キーポイント: セットは、in 演算子、not in 演算子、remove メソッドのリストよりも効率的です。

        リスト内の要素には添字演算子を使用してアクセスできます。ただし、セット内の要素は順序付けされていないため、セットでは添字演算子がサポートされません。for ループを使用して、コレクション内のすべての要素を反復処理します。

4. 辞書

キー ポイント: ディクショナリは、キーと値のペアのコレクションを格納するコンテナ オブジェクトです。キーワードを使用して値を迅速に取得、削除、更新します。

        プログラムがテロリストに関する詳細情報を「飛行禁止」テーブルに保存する必要があるとします。辞書は、このタスクにとって効率的なデータ構造です。辞書は、キーに従って保存された値のコレクションです。これらのキーワードは添字演算子によく似ています。リストでは、添字は整数です。辞書では、キーはハッシュ可能なオブジェクトである必要があります。辞書には重複したキーワードを含めることはできません。各キーワードは値に対応します。図に示すように、キーワードとそれに対応する値が辞書に格納されるエントリ (入力フィールド) を形成します。

        このデータ構造は、単語がキーワードに相当し、これらの単語の詳細な定義が対応する値である辞書に非常に似ているため、「辞書」と呼ばれます。辞書は、各キーと値を照合するグラフともみなされます。

4.1. 辞書の作成

これらのエントリを中        括弧 ( { } ) のペアで囲んで辞書を作成できます。各エントリは、キーワード、コロン、値で構成されます。各エントリはカンマで区切られます。たとえば、次のようなステートメントです。

students = {"111-34-3434":"John", "132-56-6290":"Peter"}

        図14-1bに示すように、2つのエントリを含む辞書を作成します。ディクショナリ内の各エントリはkey:valueの形式です。最初のエントリのキーは 111-34-3434 で、対応する値は John です。キーワードは、数値や文字列などのハッシュ可能なタイプである必要があります。また、値は任意の型にすることができます。次の構文を使用して、空の辞書を作成できます。

students = {} # Create an empty dictionary

注: Python は中括弧を使用してコレクションと辞書を作成します。構文{ }は、空の辞書を表すために使用されます。空のコレクションを作成するには、set()を使用します。

4.2. 値の追加、変更、取得

辞書にエントリを追加するには、次の構文を使用します。

dictionaryName[key] = value

例えば:

students["234-56-9010"] = "Susan"

        キーワードが辞書にすでに存在する場合、上記の構文はキーワードに対応する値を置き換えます。値を取得するには、dictionaryName[key]を使用して式を記述するだけです。キーワードが辞書にある場合は、キーワードに対応する値が返されます。それ以外の場合は、KeyError 例外がスローされます。

4.3. エントリの削除

辞書からエントリを削除するには、次の構文を使用します。

del dictionaryName[key]

例えば:

del students["234-56-9010"]

        このステートメントは、キーワード 234-56-9010 を持つ対応するエントリを辞書から削除します。キーワードが辞書に存在しない場合は、KeyError 例外がスローされます。

4.4. ループエントリ

        for ループを使用して、辞書内のすべてのキーワードを反復処理できます。例えば:

1 >>> students = {"111-34-3434": "John","132-56-6290":"Peter"}
2 >>> for key in students :
3 ...     print(key + ":" + str(students[key]))
4 ...
5 "111- 34- 3434":"John"
6 "132- 56-6290":"Peter" 
7 >>>

        for ループは、students 辞書内のキーを反復処理します (2 行目)。students[key] はキーワード key に対応する値を返します (3 行目)。

4.5、len関数

len(dictionary) を使用して、辞書内のエントリの数を取得できます。例えば:

1 >>> students = {"111-34-3434":"John", "132-56- 6290" :"Peter"}
2 >>> len(students)
3 2
4 >>>

2 行目で、len(students) は辞書 students のエントリの数を返します。

4.6. キーワードが辞書にあるかどうかを確認する

in または not in 演算子を使用して、キーワードが辞書に含まれているかどうかを判断できます。例えば:

1 >>> students = {"111-34-3434":"John", "132-56- 6290":"Peter"}
2 >>> "111-34-3434" in s tudents
3 True
4 >>> "999-34-3434" in students
5 False
6 >>>

        2 行目では、students の「111-34-3434」により、キーワード 111-34-3434 が辞書 students にあるかどうかが検出されます。

4.7. 等価性の検出

演算子 == および != を使用して、2 つの辞書に同じエントリが含まれているかどうかを確認できます。例えば:

>>> d1 = {"red":41, "blue":3}
>>> d2 = {"b1ue":3, "red":41}
>>> d1 == d2
True
>>> d1 != d2
False

この例では、辞書内のエントリの順序に関係なく、d1 と d2 には同じエントリが含まれています。

注: 辞書内のエントリは順序付けされていないため、比較演算子 (>、>=、<=、<) を使用して辞書を比較することはできません。

4.8. 辞書メソッド

        Python の辞書クラスはdictです。

        get(key)メソッドは、キーワード key が辞書にない場合に例外をスローする代わりにNoneを返す点を除いて、 dictionaryName[key]と似ています。Pop(key)メソッドは、 del DictionaryName[key]に似ています

5. まとめ

  • タプルは固定リストです。タプル内の要素を追加、削除、または置換することはできません。
  • タプルはシーケンスであるため、シーケンスに対する一般的な操作をタプルに対しても使用できます。
  • タプルの要素を追加、削除、または置換することはできませんが、要素が変更可能な場合は、個々の要素の内容を変更できます。
  • すべての要素が不変であれば、タプルは不変です。
  • コレクションは、要素のセットを保存するために使用されるリストのようなものです。ただし、リストとは異なり、セット内の要素は反復可能ではなく、特定の順序で配置されません。
  • add メソッドを使用してコレクションに要素を追加し、remove メソッドを使用してコレクションから要素を削除できます。
  • 関数 len、min、max、sum はすべてセットで使用できます。
  • for ループを使用して、コレクション内の要素を反復処理できます。
  • issubset メソッドまたは issuperset メソッドを使用して、セットが別のセットのサブセットであるか親であるかを検出し、|、&、-、および ^ 演算子を使用してセットの和集合、共通部分、差分、および対称差分を取得できます。
  • セットまたはリストに要素が存在するかどうかを判断したり、セットまたはリストから要素を削除したりする場合、セットはリストよりも効率的です。
  • 辞書を使用して、キーと値のペアを保存できます。キーワードを使用して値を取得できます。これらのキーワードは添字演算子のように機能します。
  • リストでは、これらの添え字はすべて整数です。辞書では、これらのキーは数値や文字列などの任意のハッシュ可能なオブジェクトにすることができます。
  • DictionaryName[key] を使用して辞書内の特定のキーの値を取得し、dictionaryName[key]=value を使用して辞書内のエントリを追加または変更できます。
  • 特定のキーに対応するエントリは、del DictionaryName[key] を使用して削除できます。
  • for ループを使用して、辞書内のすべてのキーを反復処理できます。
  • len 関数を使用すると、辞書内のエントリの数を返すことができます。
  • in 演算子と not in 演算子を使用すると、キーが辞書にあるかどうかを判断でき、== 演算子と != 演算子を使用して 2 つの辞書が同じかどうかを確認できます。
  • 辞書では、keys(、values()、iterms()、clear()、get(key)、pop(key)、popitem() メソッドを使用できます。

おすすめ

転載: blog.csdn.net/java_faep/article/details/132334853