このページで解説している内容は、以下の YouTube 動画の解説で見ることができます。

Python入門】オブジェクトの生成や変換に使う関数

オブジェクトの生成や変換に使う関数

 Pythonには、値を特定の型に変換したり、必要なデータ構造のオブジェクトを生成したりするための組み込み関数が多数用意されています。これらの関数は厳密にはクラスであり、呼び出すことで新たなオブジェクト(インスタンス)を返します。
 ここでは、値の型変換、データ構造の生成、バイナリデータの取り扱い、さらには複素数やイミュータブルな集合、最も基本的なobjectオブジェクトなど、さまざまな変換・生成関数について、その使い方や応用例を表やサンプルプログラムとともに解説します。

プログラムのダウンロード

 「ダウンロード」から、JupyterLab で実行できるサンプルプログラムがダウンロードできます。ファイルは、ESET Endpoint Securityでウイルスチェックをしておりますが、ダウンロードとプログラムの実行は自己責任でお願いいたします。

1.値の型変換に使う関数

1.1. 基本的な変換関数

 以下の関数は、与えられた値を指定した型に変換します。厳密には、値から新しいオブジェクトを生成して返します。

使い方読み方(例)変換先の型
int(値)イント整数
float(値)フロート浮動小数点数
str(値)ストリング文字列
bool(値)ブール真偽値

【例】

# 例: 文字列を整数に変換する
s = "123"
number = int(s)
print("Converted number:", number)  # 出力: Converted number: 123

実行結果

Converted number: 123

解説

  • 文字列 "123" を int() 関数に渡すことで、整数123のオブジェクトが生成されます。
  • このように、値の型変換により、適切なデータ型で処理を進めることができます。

1.2. 型変換の応用

 これらの関数は、計算や条件判定の前に値の型を揃える際にも役立ちます。例えば、数値と文字列の結合を行いたい場合、str関数で数値を文字列に変換することができます。

price = 2500
message = "The price is " + str(price) + " yen."
print(message)

実行結果

The price is 2500 yen.

解説

数値2500をstr()関数で文字列 "2500" に変換し、他の文字列と連結して出力しています。

2.データ構造を作成する関数

2.1. 基本的なデータ構造生成関数

 以下の関数は、引数となるイテラブルから新たなデータ構造を生成します。これらも実際には各データ構造を表すクラスであり、呼び出すと対応するオブジェクトが返されます。

使い方読み方(例)作成するデータ構造
list(イテラブル)リストリスト
tuple(イテラブル)タプルタプル
set(イテラブル)セット集合
dict(イテラブル)ディクショナリ辞書

【例】

# 例: 文字列からリスト、タプル、集合を生成する
s = "data"
print("List:", list(s))    # 出力: List: ['d', 'a', 't', 'a']
print("Tuple:", tuple(s))  # 出力: Tuple: ('d', 'a', 't', 'a')
print("Set:", set(s))      # 出力: Set: {'a', 'd', 't'}

実行結果

List: ['d', 'a', 't', 'a']
Tuple: ('d', 'a', 't', 'a')
Set: {'d', 't', 'a'}

解説

  • 文字列 "data" はイテラブルであり、各文字が個々の要素として扱われます。
  • list()、tuple()、set() 関数により、それぞれリスト、タプル、集合が生成されます。

2.2. 辞書の生成

 dict() 関数は、キーと値のペアからなるイテラブル(例えばタプルのリスト)を受け取り、辞書を生成します。

# 例: キーと値のタプルのリストから辞書を生成する
pairs = [("apple", 100), ("banana", 200)]
fruit_prices = dict(pairs)
print("Fruit Prices:", fruit_prices)

実行結果

Fruit Prices: {'apple': 100, 'banana': 200}

解説

  • pairsは各要素がタプル ("apple", 100) などになっており、dict() 関数はこれを辞書に変換します。
  • 結果として、{"apple": 100, "banana": 200} が生成されます。

3.バイト列やバイト配列、その他の特殊な変換関数

3.1. バイト列とバイト配列

 bytes() 関数および bytearray() 関数は、テキストデータや整数のイテラブルから、バイト列(イミュータブル)やバイト配列(ミュータブル)を生成します。

【例:文字列をバイト列に変換し、各バイトをリストに変換する】

b = bytes("network", encoding="utf-8")
print("Bytes:", b)
print("Byte values:", list(b))

実行結果

Bytes: b'network'
Byte values: [110, 101, 116, 119, 111, 114, 107]

解説

  • "network" をUTF-8エンコーディングでバイト列に変換し、bytes() 関数がイミュータブルなバイト列オブジェクトを生成します。
  • list() 関数で各バイトの値(整数)が表示されます。

3.2. 複素数とイミュータブル集合

 complex() 関数は複素数のオブジェクトを生成し、frozenset() 関数はイミュータブル(変更不可能)な集合を生成します。

# 複素数の生成
c1 = complex(3, 4)
print("Complex number:", c1)

# イミュータブルな集合の生成
immutable_set = frozenset(["red", "blue", "green"])
print("Immutable set:", immutable_set)

実行結果

Complex number: (3+4j)
Immutable set: frozenset({'red', 'blue', 'green'})

解説

  • complex(3, 4) は、実部3、虚部4の複素数 (3+4j) を生成します。
  • frozenset() 関数にリストを渡すことで、ミュータブルな集合と異なり、変更不可能な集合を生成できます。

3.3. 最も基本的なobjectの生成

 object() 関数は、Pythonのすべてのクラスの基底クラスであるobjectクラスのオブジェクトを生成します。
【例】

basic_obj = object()
print(basic_obj)

実行結果

<object object at 0x000002627B269500>

解説

  • この例では、object() 関数によって生成されたオブジェクトの参照が表示されます。
  • objectオブジェクトはあまり直接利用されることはありませんが、クラスの基底として常に存在します。

まとめ

 Pythonのオブジェクトの生成や変換に使う関数は、値を特定の型に変換するだけでなく、新たなデータ構造を生成するための強力なツールです。

  • int, float, str, boolなどは、基本的な型変換を行い、値から対応するオブジェクトを生成します。
  • list, tuple, set, dictなどは、イテラブルなデータからリスト、タプル、集合、辞書といったデータ構造のオブジェクトを作成します。
  • bytes, bytearray, memoryviewなどは、バイナリデータの操作や変換に役立ち、complexやfrozenset、object関数もそれぞれ複素数やイミュータブルな集合、基本オブジェクトを生成します。

 これらの関数を活用することで、プログラム内のデータ管理が一層柔軟かつ効率的になり、さまざまな処理に対応できるようになります。