はじめに
この実験では、Python のデータ構造について学びます。取り扱うデータ構造の主な内容は、リスト、タプル、辞書、および集合です。
学習目標
- リスト
- リスト内包表記
- タプル
- 辞書
- 集合
この実験では、Python のデータ構造について学びます。取り扱うデータ構造の主な内容は、リスト、タプル、辞書、および集合です。
Python では、リストは様々な種類のオブジェクトを保持できる汎用的なコンテナとして機能します。ここでは、リストの作成、値のアクセス、値の更新、値の追加、および値の削除などの基本的なリスト操作について説明します。
リストは、角括弧で囲まれたカンマ区切りの値で定義されます。リスト内のデータ項目は、同じ型である必要はありません。
>>> l1 = [1, 2, 3, 'a', 'hello']
>>> l1
[1, 2, 3, 'a', 'hello']
>>> l2 = ['monday', 'tuesday', 'wednesday', 'thursday', 'friday']
>>> l2
['monday', 'tuesday', 'wednesday', 'thursday', 'friday']
添字インデックスを使用して、リスト内の値にアクセスします。
>>> print("l1[0] = ", l1[0])
l1[0] = 1
次のように角括弧形式を使用して文字を切り取ることができます。これをスライスと呼びます。スライスは、リストから項目の範囲を抽出する方法です。
list_name[Start:End:Step]
最初のインデックス (Start) は開始インデックスで、2 番目のインデックス (End) は終了インデックスです。3 番目のインデックス (Step) はステップで、ステップは増分 (デフォルトは 1) です。
>>> print("l2[1:3] = ", l2[1:3])
l2[1:3] = ['tuesday', 'wednesday']
添字インデックスを使用して値にアクセスし、新しい値を割り当てることで、値を更新できます。
>>> l1[0] = 10
>>> l1
[10, 2, 3, 'a', 'hello']
append()
メソッドを使用して、リストに値を追加できます。
list_name.append(value)
>>> l1.append('b')
>>> l1
[10, 2, 3, 'a', 'hello', 'b']
>>> l2.append('statuday')
>>> l2
['monday', 'tuesday', 'wednesday', 'thursday', 'friday', 'statuday']
del
キーワードを使用して、リストから値を削除できます。この方法は、指定されたインデックスの要素をリストから削除します。
del list_name[index]
>>> del l1[0]
>>> l1
[2, 3, 'a', 'hello', 'b']
また、remove()
メソッドを使用して、リストから指定された値を削除することもできます。
list_name.remove(value)
>>> l1.remove('a')
>>> l1
[2, 3, 'hello', 'b']
len()
関数を使用して、リストの長さを取得できます。
>>> print("Length of l1 = ", len(l1))
Length of l1 = 5
sorted()
関数を使用して、リストをソートできます。
>>> print("Sorted of l2 = ", sorted(l2))
Sorted of l2 = ['friday', 'monday', 'thursday', 'tuesday', 'wednesday']
リスト内包表記は、Python で既存のイテラブル(リストなど)を反復処理し、各要素に式を適用して新しいリストを作成する、簡潔で強力な方法です。
リスト内包表記の形式は for
ループとして理解できます。リスト内包表記の構文は次の通りです。
new_list = [expression for item in old_list]
new_list = [expression for item in old_list if condition]
new_list
:既存のリストの各要素に対する式から生成される結果のリスト。expression
:既存のリストの各要素に適用され、新しいリストを生成する操作または変換。item
:既存のリストの各要素を表す変数。old_list
:新しいリストを生成するために使用される既存のリスト。condition
(オプション):指定された基準に基づいて、既存のリストから特定の要素のみを含めるために適用できるフィルタ条件。Python シェルでリスト内包表記を練習してみましょう。
>>> ls = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
>>> even_list = [item for item in ls if item % 2 == 0]
>>> even_list
[2, 4, 6, 8, 10]
この例では、even_list
には ls
リストの偶数のみが含まれます。
リスト内包表記は、リストを操作するための簡潔で読みやすい方法を提供し、Python コードをより表現力豊かで効率的にします。
Python のタプルはリストに似ていますが、タプルの要素は不変(immutable)であり、作成後に変更することができません。タプルの要素は ()
で囲まれ、,
で区切られます。
次の要素でタプルを作成します。
>>> tup1 = ('Google', 'Run', 'Python')
>>> tup2 = (1, 2, 3, 4, 5)
>>> empty_tup = ()
>>> tup1
('Google', 'Run', 'Python')
>>> tup2
(1, 2, 3, 4, 5)
>>> empty_tup
()
インデックスを使用してタプルの要素にアクセスします。
>>> print(tup1[0])
Google
>>> print(tup2[1:3])
(2, 3)
>>> print(empty_tup[0])
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
IndexError: tuple index out of range ## エラーが発生します。なぜなら、タプルが空です。
タプルは変更できませんが、結合することはできます。
>>> tup3 = tup1 + tup2
>>> print(tup3)
('Google', 'Run', 'Python', 1, 2, 3, 4, 5)
タプルは、変更すべきでないデータを格納する信頼性の高い方法を提供し、Python プログラムに安定性と整合性をもたらします。
Python の辞書は、キーと値のペアを格納する汎用的で変更可能なデータ構造です。
各キーと値のペアはコロンで区切られ、各ペアはカンマで区切られ、辞書全体は波括弧 {}
で囲まれます。
d = {key1 : value1, key2 : value2, key3 : value3 }
辞書のキーは一意でなければなりませんが、値は重複することができます。
キーと値のペアで辞書を作成します。
>>> dict1 = {'name': 'James', "age": 23, "phone": "12345"}
>>> dict2 = {}
>>> dict1
{'name': 'James', 'age': 23, 'phone': '12345'}
>>> dict2
{}
角括弧 []
内のキーまたは get()
関数を使用して、キーと値のペアにアクセスします。
>>> print(dict1["name"])
James
>>> print(dict2["name"])
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
KeyError: 'name'
>>> print(dict2.get("name"))
None
dict[key]
を使用して辞書に存在しないキーにアクセスすると、KeyError
例外が発生します。ただし、dict.get(key)
は辞書内にキーが見つからない場合に None
を返します。
キーに値を割り当てることで、辞書のエントリを追加または変更します。
>>> dict2["name"] = "Lily"
>>> dict1["name"] = "Bob"
>>> dict2["name"]
'Lily'
>>> dict1["name"]
'Bob'
del dict[key]
を使用してキーと値のペアを削除するか、dict.clear()
を使用して辞書全体をクリアします。
>>> del dict1["name"]
>>> print(dict1)
{'age': 23, 'phone': '12345'}
>>> dict2.clear()
>>> print(dict2)
{}
辞書はデータを柔軟に格納し操作する方法を提供し、Python プログラミングの様々なタスクに不可欠です。
Python の集合(Set)は、一意の要素からなる順序付けされていないコレクションです。波括弧 {}
または set()
関数を使用して作成することができます。
空の集合を作成するには、{}
ではなく set()
を使用する必要があります。なぜなら、{}
は空の辞書を作成するために使用されるからです。異なる方法で集合を作成します。
>>> set1 = set()
>>> print(set1)
set()
>>> set2 = {'apple', 'orange', 'banana'}
>>> print(set2)
{'banana', 'apple', 'orange'}
>>> set3 = set("Hello World!")
>>> print(set3)
{'o', 'H', 'W', ' ', 'd', 'r', '!', 'e', 'l'}
add()
または update()
メソッドを使用して集合に要素を追加します。
>>> set1.add('apple')
>>> print(set1)
{'apple'}
>>> set2.update({'orange', 'pear'})
>>> print(set2)
{'apple', 'orange', 'banana', 'pear'}
discard()
または remove()
メソッドを使用して集合から要素を削除します。
discard()
メソッドは、要素が集合に存在しない場合でもエラーを発生させませんが、remove()
メソッドはエラーを発生させます。
>>> set1.remove('apple')
>>> print(set1)
set()
>>> set1.discard('banana')
>>> print(set1)
set()
集合は、Python で一意の要素のコレクションを扱う便利な方法を提供し、重複の削除やメンバーシップのテストなどの様々なタスクに役立ちます。
おめでとうございます!データ構造の実験を完了しました。
この実験では、Python の基本的なデータ構造と、問題を解く際にこれらのデータ構造をいつ、どのように使用するかを学びました。