目次
I.はじめに
Python は、1991 年に Guido van Rossum によって作成された高級プログラミング言語です。簡潔で読みやすい構文、強力な機能、幅広いアプリケーションで知られています。Python には、Web 開発、データ分析、人工知能、科学技術コンピューティング、自動化スクリプトなど、さまざまな種類のアプリケーションの開発に使用できる標準ライブラリとサードパーティ ライブラリが豊富にあります。
Python 自体は優れた汎用プログラミング言語であり、いくつかの人気のあるライブラリ (numpy、scipy、matplotlib) の助けを借りて、科学技術コンピューティングのための強力な環境となっています。このシリーズでは、Python プログラミング言語と、主に次のような科学技術計算に Python を使用する方法を紹介します。
- Python: プリミティブ データ型、コンテナ (リスト、タプル、セット、辞書)、関数、クラス
- Numpy: 配列、配列のインデックス付け、データ型、配列の演算、ブロードキャスト
- Matplotlib: プロット、サブプロット、画像
- IPython: ノートブックの作成、一般的なワークフロー
2. 実験環境
Python 3.7
次のコマンドを実行して Python のバージョンを確認します。
python --version
3. Python コンテナ
0. コンテナの概要
Python のコンテナは、データを保存および整理するために使用されるオブジェクトです。一般的なコンテナには、リスト、タプル、セット、辞書が含まれます。
- リストは、さまざまなタイプの要素を含めることができる順序付けされた変更可能なコンテナーであり、角括弧 ([]) を使用して作成されます。
my_list = [1, 2, 3, 'a', 'b', 'c']
- タプルは、順序付けされた不変のコンテナであり、さまざまなタイプの要素を含めることもでき、かっこ (()) を使用して作成されます。
my_tuple = (1, 2, 3, 'a', 'b', 'c')
- セットは、一意の要素を格納するために使用される順序付けされていない重複のないコンテナであり、中括弧 ({}) または set() 関数を使用して作成されます。
my_set = {1, 2, 3, 'a', 'b', 'c'}
- ディクショナリは、一意のキーを持つ値を保存するために使用されるキーと値のペアの順序付けされていないコンテナであり、中括弧 ({}) または dict() 関数を使用して作成されます。
my_dict = {'name': 'Alice', 'age': 25, 'city': 'New York'}
これらのコンテナは、データの保存、アクセス、処理のためのさまざまな方法と操作を提供します。特定のニーズに基づいて、適切なコンテナのタイプを選択できます。
1. リスト
2.タプル
3.セット
コレクション (セット) は一般的なデータ構造です。セットは、順序付けされておらず、一意の要素を含むコンテナーです。要素の重複を許さないのが特徴で、積集合、和集合、差分などのさまざまな集合演算が可能です。コレクション (Set) は、直接のアンパック操作をサポートしていません。これは、コレクションには順序付けがなく、要素の位置をインデックスから決定できないためです。
1. 初期化
コレクションは中括弧{}
または関数を使用してset()
作成できます。
my_set = {1, 2, 3} # 使用大括号创建集合
my_set = set([1, 2, 3]) # 使用set()函数创建集合
2. コレクション要素にアクセスする
リストやタプルとは異なり、コレクション内の要素には順序がないため、インデックスによってアクセスできません。さらに、コレクション自体はハッシュ テーブルに基づいて実装されるため、コレクション内の要素はハッシュ可能 (つまり、不変) である必要があります。ループを使用するか、コレクションを他のインデックス可能なデータ構造に変換して要素にアクセスできます。
a. ループを使用してコレクション内の要素を走査します。
my_set = {1, 2, 3, 4, 5}
for element in my_set:
print(element)
これにより、コレクション内のすべての要素が出力されます。
b. 他のデータ構造への変換
コレクションをリストまたはタプルに変換し、インデックスによって要素にアクセスします。
my_set = {1, 2, 3, 4, 5}
my_list = list(my_set)
print(my_list[0]) # 访问第一个元素
my_tuple = tuple(my_set)
print(my_tuple[2]) # 访问第三个元素
3. 共通操作
a. 単一の要素を追加します (add)
my_set.add(5) # 添加单个元素
b. 複数の要素を追加(更新)
my_set.update([6, 7, 8]) # 添加多个元素
c. 削除
要素が存在しない場合に例外remove()
をスローするメソッド、または要素が存在しない場合に例外をスローしないメソッドを 使用して、コレクションから要素を削除できます。KeyError
discard()
my_set.remove(3) # 移除指定元素,如果不存在会引发KeyError异常
my_set.discard(4) # 移除指定元素,如果不存在不会引发异常
d. 要素がセット内に存在するかどうかを確認します。
my_set = {1, 2, 3}
element = 3
if element in my_set:
print("元素存在于集合中")
4. よく使う機能
intersection()
これらの操作は、対応するメソッド ( 、union()
、difference()
、など) または演算子 ( 、、、symmetric_difference()
など) を使用して実行できます。&
|
-
^
a. 交差点
セットの共通部分は、2 つ以上のセットに同時に存在するすべての要素を含む新しいセットです。交差は、交差演算子 ( &
) またはintersection()
メソッドを使用して計算できます。
set1 = {1, 2, 3, 4}
set2 = {3, 4, 5, 6}
# 使用交集运算符
intersection = set1 & set2
print(intersection)
# 使用intersection()方法
intersection = set1.intersection(set2)
print(intersection)
出力は次のとおりです。
{3, 4}
b. 結合
セットの和集合は、2 つ以上のセットに属するすべての一意の要素を含む新しいセットです。共用体は、共用体演算子 ( |
) またはメソッドを使用してunion()
計算できます。
set1 = {1, 2, 3}
set2 = {3, 4, 5}
# 使用并集运算符
union = set1 | set2
print(union)
# 使用union()方法
union = set1.union(set2)
print(union)
出力は次のとおりです。
{1, 2, 3, 4, 5}
c. 差分セット
セットの差分は、一方のセットからもう一方のセットに属するすべての要素を削除することによって得られる新しいセットです。差分は、差分演算子 ( -
) またはdifference()
メソッドを使用して計算できます。
set1 = {1, 2, 3, 4}
set2 = {3, 4, 5}
# 使用差集运算符
difference = set1 - set2
print(difference)
# 使用difference()方法
difference = set1.difference(set2)
print(difference)
出力は次のとおりです。
{1, 2}
d. 対称差集合
セットの対称差分セットは、両方のセットに属する一意の要素を含むが、両方のセットに存在する要素は含まない新しいセットです。対称差分は、対称差分演算子 ( ^
) またはメソッドを使用してsymmetric_difference()
計算できます。
set1 = {1, 2, 3}
set2 = {3, 4, 5}
# 使用对称差集运算符
symmetric_difference = set1 ^ set2
print(symmetric_difference)
# 使用symmetric_difference()方法
symmetric_difference = set1.symmetric_difference(set2)
print(symmetric_difference)
出力は次のとおりです。
{1, 2, 4, 5}
e. 概要
set1 = {1, 2, 3}
set2 = {3, 4, 5}
intersection1 = set1.intersection(set2) # 交集
intersection2 = set1 & set2 # 交集
union1 = set1.union(set2) # 并集
union2 = set1 | set2 # 并集
difference1 = set1.difference(set2) # 差集
difference2 = set1 - set2 # 差集
symmetric_difference1 = set1.symmetric_difference(set2) # 对称差集
symmetric_difference2 = set1 ^ set2 # 对称差集