はじめに
この実験では、Python の基本的なデータ構造であるリスト、タプル、セット、辞書を学びます。これまでの実験で得た知識を基に、これらの多用途なデータ構造を作成、操作、利用する方法を学びます。この実践的な経験により、Python のコアコンセプトの理解が深まり、プログラムでより複雑なデータを扱えるようになります。
この実験では、Python の基本的なデータ構造であるリスト、タプル、セット、辞書を学びます。これまでの実験で得た知識を基に、これらの多用途なデータ構造を作成、操作、利用する方法を学びます。この実践的な経験により、Python のコアコンセプトの理解が深まり、プログラムでより複雑なデータを扱えるようになります。
このステップでは、Python における順序付きで可変な要素のコレクションであるリストについて学びます。
ターミナルに次のコマンドを入力して Python インタプリタを開きます。
python
Python のプロンプト (>>>) が表示され、Python の対話型シェルに入ったことがわかります。
まずはリストを作成しましょう。Python インタプリタに次のように入力します。
>>> fruits = ["apple", "banana", "cherry"]
>>> print(fruits)
['apple', 'banana', 'cherry']
Python のリストは四角かっこ[]
を使って作成され、要素はコンマで区切られます。
リストの要素にはインデックスを使ってアクセスできます。Python は 0 ベースのインデックスを使用することに注意してください。
>>> print(fruits[0]) ## 最初の要素
apple
>>> print(fruits[-1]) ## 最後の要素
cherry
リストは可変であり、つまりその内容を変更できます。
>>> fruits[1] = "blueberry"
>>> print(fruits)
['apple', 'blueberry', 'cherry']
リストに要素を追加するにはappend()
メソッドを使うか、特定の位置に要素を挿入するにはinsert()
メソッドを使います。
>>> fruits.append("date")
>>> print(fruits)
['apple', 'blueberry', 'cherry', 'date']
>>> fruits.insert(1, "banana")
>>> print(fruits)
['apple', 'banana', 'blueberry', 'cherry', 'date']
要素を削除するには、remove()
メソッドまたはdel
文を使います。
>>> fruits.remove("cherry")
>>> print(fruits)
['apple', 'banana', 'blueberry', 'date']
>>> del fruits[0]
>>> print(fruits)
['banana', 'blueberry', 'date']
リストにはさまざまな型の要素を含めることができ、他のリストも含めることができます。
>>> mixed_list = [1, "hello", 3.14, [1, 2, 3]]
>>> print(mixed_list)
[1, 'hello', 3.14, [1, 2, 3]]
リストは多用途で、Python では要素のコレクションを格納するために広く使用されています。
このステップでは、Python における順序付きで不変なシーケンスであるタプルについて学びます。
Python インタプリタでタプルを作成しましょう。
>>> coordinates = (3, 4)
>>> print(coordinates)
(3, 4)
タプルは丸かっこ()
を使って作成されます。
リストと同様に、タプルの要素にはインデックスを使ってアクセスできます。
>>> print(coordinates[0])
3
>>> print(coordinates[1])
4
ただし、リストとは異なり、タプルは不変です。これは、作成後にその内容を変更できないことを意味します。
>>> coordinates[0] = 5 ## これはエラーを引き起こします
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'tuple' object does not support item assignment
タプルにはさまざまな型の要素を含めることができます。
>>> person = ("Alice", 25, "Engineer")
>>> name, age, occupation = person ## タプルの展開
>>> print(f"{name} is {age} years old and works as an {occupation}.")
Alice is 25 years old and works as an Engineer.
タプルの展開は、一度に複数の変数に値を割り当てる便利な方法です。
1 つの要素のタプルを作成することができますが、カンマを含めることに注意してください。
>>> single_item_tuple = (42,)
>>> print(type(single_item_tuple))
<class 'tuple'>
カンマがない場合、Python はそれを丸かっこ内の通常の値として解釈します。
タプルは、関数から複数の値を返すためによく使用されます。
>>> def get_dimensions():
... return (1920, 1080)
...
>>> width, height = get_dimensions()
>>> print(f"Width: {width}, Height: {height}")
Width: 1920, Height: 1080
タプルは、変更してはならない要素のコレクションを作成する場合に便利です。
このステップでは、Python における一意の要素の順序なしコレクションであるセットについて学びます。
Python インタプリタでセットを作成しましょう。
>>> fruits = {"apple", "banana", "cherry"}
>>> print(fruits)
{'cherry', 'banana', 'apple'}
セットは波括弧{}
またはset()
関数を使って作成されます。セットを表示するとき、要素の順序は異なる場合があります。
セットは自動的に重複する要素を削除します。
>>> numbers = {1, 2, 2, 3, 3, 4}
>>> print(numbers)
{1, 2, 3, 4}
add()
メソッドを使ってセットに要素を追加できます。
>>> fruits.add("date")
>>> print(fruits)
{'cherry', 'banana', 'apple', 'date'}
要素を削除するには、remove()
メソッドを使います。
>>> fruits.remove("banana")
>>> print(fruits)
{'cherry', 'apple', 'date'}
セットは和集合、積集合、差集合などの数学的なセット演算をサポートしています。
>>> set1 = {1, 2, 3}
>>> set2 = {3, 4, 5}
>>> print(set1.union(set2)) ## 和集合
{1, 2, 3, 4, 5}
>>> print(set1.intersection(set2)) ## 積集合
{3}
>>> print(set1.difference(set2)) ## 差集合
{1, 2}
in
キーワードを使って、要素がセットに含まれているかどうかを確認できます。
>>> print("apple" in fruits)
True
>>> print("banana" in fruits)
False
一意の要素を格納したり、セット演算を行う必要がある場合、セットは便利です。
このステップでは、Python におけるキーと値のペアの順序なしコレクションである辞書について学びます。
Python インタプリタで辞書を作成しましょう。
>>> person = {"name": "Alice", "age": 25, "occupation": "Engineer"}
>>> print(person)
{'name': 'Alice', 'age': 25, 'occupation': 'Engineer'}
辞書は波括弧{}
を使って作成され、キーと値のペアはコロン:
で区切られます。
辞書の値にはキーを使ってアクセスできます。
>>> print(person["name"])
Alice
>>> print(person["age"])
25
辞書は可変であるため、キーと値のペアを追加または変更できます。
>>> person["city"] = "New York"
>>> person["age"] = 26
>>> print(person)
{'name': 'Alice', 'age': 26, 'occupation': 'Engineer', 'city': 'New York'}
キーと値のペアを削除するには、del
文を使います。
>>> del person["city"]
>>> print(person)
{'name': 'Alice', 'age': 26, 'occupation': 'Engineer'}
in
キーワードを使って、辞書にキーが存在するかどうかを確認できます。
>>> print("name" in person)
True
>>> print("city" in person)
False
辞書にはkeys()
、values()
、items()
などの便利なメソッドがあります。
>>> print(person.keys())
dict_keys(['name', 'age', 'occupation'])
>>> print(person.values())
dict_values(['Alice', 26, 'Engineer'])
>>> print(person.items())
dict_items([('name', 'Alice'), ('age', 26), ('occupation', 'Engineer')])
辞書内包表記を使って、簡潔に辞書を作成できます。
>>> squares = {x: x**2 for x in range(5)}
>>> print(squares)
{0: 0, 1: 1, 2: 4, 3: 9, 4: 16}
辞書は、一意のキーを使ってデータを格納および取得する際に非常に便利です。
この最後のステップでは、この実験で学んだすべてのデータ構造を利用するプログラムを作成します。
exit()
を入力するか、Ctrl+D を押して Python インタプリタを終了します。
LabEx VM 環境の WebIDE を開きます。
~/project
ディレクトリに新しいファイルcontact_manager.py
を作成します。
touch ~/project/contact_manager.py
WebIDE エディタで新しく作成したファイルを開き、次の内容を追加します。
def add_contact(contacts, name, phone, email):
contacts[name] = {"phone": phone, "email": email}
print(f"Contact {name} added successfully.")
def remove_contact(contacts, name):
if name in contacts:
del contacts[name]
print(f"Contact {name} removed successfully.")
else:
print(f"Contact {name} not found.")
def display_contacts(contacts):
if contacts:
print("\nContact List:")
for name, info in contacts.items():
print(f"Name: {name}, Phone: {info['phone']}, Email: {info['email']}")
else:
print("Contact list is empty.")
def main():
contacts = {}
favorite_contacts = set()
while True:
print("\nContact Manager")
print("1. Add Contact")
print("2. Remove Contact")
print("3. Display Contacts")
print("4. Add to Favorites")
print("5. Display Favorites")
print("6. Exit")
choice = input("Enter your choice (1-6): ")
if choice == "1":
name = input("Enter name: ")
phone = input("Enter phone number: ")
email = input("Enter email: ")
add_contact(contacts, name, phone, email)
elif choice == "2":
name = input("Enter name to remove: ")
remove_contact(contacts, name)
elif choice == "3":
display_contacts(contacts)
elif choice == "4":
name = input("Enter name to add to favorites: ")
if name in contacts:
favorite_contacts.add(name)
print(f"{name} added to favorites.")
else:
print(f"Contact {name} not found.")
elif choice == "5":
print("\nFavorite Contacts:")
for name in favorite_contacts:
print(name)
elif choice == "6":
print("Thank you for using Contact Manager. Goodbye!")
break
else:
print("Invalid choice. Please try again.")
if __name__ == "__main__":
main()
このプログラムは、辞書、セット、およびリストを使って単純なコンタクト管理システムを作成する方法を示しています。
ファイルを保存し(WebIDE では自動保存が有効になっています)、ターミナルで次のコマンドを使って実行します。
python ~/project/contact_manager.py
コンタクトを追加したり、削除したり、コンタクトリストを表示したり、お気に入りのコンタクトに追加したり、お気に入りのコンタクトを表示したりすることで、プログラムと対話します。以下は対話の例です。
Contact Manager
1. Add Contact
2. Remove Contact
3. Display Contacts
4. Add to Favorites
5. Display Favorites
6. Exit
Enter your choice (1-6): 1
Enter name: Alice
Enter phone number: 123-456-7890
Enter email: [email protected]
Contact Alice added successfully.
Contact Manager
1. Add Contact
2. Remove Contact
3. Display Contacts
4. Add to Favorites
5. Display Favorites
6. Exit
Enter your choice (1-6): 1
Enter name: Bob
Enter phone number: 987-654-3210
Enter email: [email protected]
Contact Bob added successfully.
Contact Manager
1. Add Contact
2. Remove Contact
3. Display Contacts
4. Add to Favorites
5. Display Favorites
6. Exit
Enter your choice (1-6): 3
Contact List:
Name: Alice, Phone: 123-456-7890, Email: [email protected]
Name: Bob, Phone: 987-654-3210, Email: [email protected]
Contact Manager
1. Add Contact
2. Remove Contact
3. Display Contacts
4. Add to Favorites
5. Display Favorites
6. Exit
Enter your choice (1-6): 4
Enter name to add to favorites: Alice
Alice added to favorites.
Contact Manager
1. Add Contact
2. Remove Contact
3. Display Contacts
4. Add to Favorites
5. Display Favorites
6. Exit
Enter your choice (1-6): 5
Favorite Contacts:
Alice
Contact Manager
1. Add Contact
2. Remove Contact
3. Display Contacts
4. Add to Favorites
5. Display Favorites
6. Exit
Enter your choice (1-6): 6
Thank you for using Contact Manager. Goodbye!
このプログラムは、辞書(コンタクト情報の保存に使用)、セット(お気に入りのコンタクトの保存に使用)、およびリスト(メニューシステムで暗黙的に使用)の実際の使用方法を示しています。
この実験では、Python の基本的なデータ構造であるリスト、タプル、セット、辞書を学びました。これらの汎用的なデータ構造を作成、操作、利用する方法を学び、Python プログラミングにおける効率的なデータ管理に欠かせない要素であることを理解しました。
最初にリストを扱い、項目の順序付きコレクションを作成、アクセス、変更する方法を学びました。次にタプルを調べ、その不変性と要素の固定コレクションを表すための使用例を理解しました。次にセットに取り組み、一意の要素を格納し、数学的なセット演算を行う能力を発見しました。最後に辞書を使い、キーと値のペアを管理して効率的なデータ検索と保存を行う方法を学びました。
これらの概念を強化するために、複数のデータ構造を利用する実際のコンタクト管理プログラムを作成しました。このプログラムは、異なるデータ構造が現実世界のアプリケーションでどのように協働するかを示し、Python のデータ構造の力と柔軟性を展示しました。
これらのデータ構造は多くの Python プログラムの骨格を形成し、データを効率的に整理および操作することを可能にします。Python の学習を続けるにつれて、これらの構造は幅広いプログラミング問題を解決するために非常に貴重であることがわかります。これらのデータ構造をさまざまなシナリオで練習して、理解を強化し、Python プログラミングに精通するようにしてください。