以下の内容はhttps://pydocument.hatenablog.com/entry/2023/03/21/141745より取得しました。


Pythonのデータ型の分かりやすい解説

Python は多様なデータ型をサポートしており、それぞれ異なる目的や特徴を持っています。この記事では、Python で利用できる主要なデータ型について、近年の情報やサンプルコードを交えながら解説します。

データ型の種類

Pythonには以下のようなデータ型があります。

データ型 説明
数値型 整数 (int), 浮動小数点数 (float), 複素数 (complex) x = 10, y = 3.14, z = 1 + 2j
文字列型 (str) 文字の並び message = "Hello, world!"
真偽型 (bool) True または False is_valid = True
シーケンス型 リスト (list), タプル (tuple), レンジ (range) my_list = [1, 2, 3], my_tuple = (4, 5, 6), numbers = range(1, 10)
マッピング 辞書 (dict) person = {"name": "Alice", "age": 30}
集合型 集合 (set), 凍結集合 (frozenset) my_set = {1, 2, 3}, my_frozenset = frozenset({4, 5, 6})
バイナリ型 バイト列 (bytes), バイト配列 (bytearray), メモリビュー (memoryview) data = b"hello", mutable_data = bytearray(b"world"), view = memoryview(data)

各データ型の詳細

1. 数値型 (Numeric types)

Python には、整数、浮動小数点数複素数の3つの数値型があります。

整数 (int)

整数値を扱います。Python の整数型は、メモリの許す限り無限の桁数を表現できます。

# 整数の定義と型確認
integer_number = 10
print(type(integer_number))  # <class 'int'>

浮動小数点数 (float)

実数を扱います。小数点を含む数値や指数表記で表現します。

# 浮動小数点数の定義と型確認
float_number = 3.14
print(type(float_number))  # <class 'float'>

複素数 (complex)

実部と虚部を持つ複素数を扱います。虚部は j または J を付けて表現します。

# 複素数の定義と型確認
complex_number = 1 + 2j
print(type(complex_number))  # <class 'complex'>
print(complex_number.real)  # 実部 1.0
print(complex_number.imag)  # 虚部 2.0

2. 文字列型 (str)

文字列は文字の並びを表現します。文字列はシングルクォート (')、ダブルクォート (")、またはトリプルクォート (''' または """) で囲んで作成します。

# 文字列の定義と型確認
string_single = 'Hello'
string_double = "World"
string_triple = '''This is a
multi-line string.'''
print(type(string_single))  # <class 'str'>

文字列に対しては、様々な操作が可能です。

  • 文字列の結合: + 演算子で文字列を結合できます。
  • 文字列の長さ: len() 関数で文字列の長さを取得できます。
  • 文字列の分割: split() メソッドで文字列を指定した区切り文字で分割できます。
  • 文字列の検索: find() メソッドで文字列内の部分文字列を検索できます。
  • 文字列の置換:replace() メソッドで文字列を置換できます。
# 文字列操作の例
greeting = "Hello, " + "world!"  # 文字列の結合
print(greeting)
print(len(greeting))  # 文字列の長さを取得

words = greeting.split(", ")  # ", " で文字列を分割
print(words)

index = greeting.find("world")  # "world" の位置を検索
print(index)
new_greeting = greeting.replace("world", "Python")
print(new_greeting)

3. 真偽型 (bool)

真偽型は True または False のいずれかの値を取ります。主に条件分岐や論理演算で使用されます。

# 真偽値の定義と型確認
is_true = True
is_false = False
print(type(is_true))  # <class 'bool'>

# 論理演算の例
print(is_true and is_false)  # False
print(is_true or is_false)   # True
print(not is_true)          # False

4. シーケンス型

シーケンス型は、複数の要素を順番に並べたデータ構造です。リスト、タプル、レンジの3種類があります。

リスト (list)

リストは、変更可能な要素の並びです。[] を使用して作成し、要素はカンマで区切ります。異なる型の要素を混在させることができます。

# リストの定義と型確認
my_list = [1, "apple", True, 3.14]
print(type(my_list))  # <class 'list'>

リストに対しては、様々な操作が可能です。

  • 要素へのアクセス: インデックス (0 から始まる) を使用して要素にアクセスできます。
  • 要素の追加: append() メソッドでリストの末尾に要素を追加できます。
  • 要素の挿入: insert() メソッドで指定した位置に要素を挿入できます。
  • 要素の削除: remove() メソッドで指定した要素を削除できます。
  • リストの長さ: len() 関数でリストの長さを取得できます。
# リスト操作の例
print(my_list[0])  # 最初の要素にアクセス (1)
my_list.append("banana")  # 末尾に "banana" を追加
print(my_list)
my_list.insert(1, "orange") # 1番目にorangeを挿入
print(my_list)
my_list.remove("apple")  # "apple" を削除
print(my_list)
print(len(my_list))  # リストの長さを取得

タプル (tuple)

タプルは、変更不可能な要素の並びです。() を使用して作成し、要素はカンマで区切ります。リストと同様に、異なる型の要素を混在させることができます。

# タプルの定義と型確認
my_tuple = (1, "apple", True, 3.14)
print(type(my_tuple))  # <class 'tuple'>

タプルは変更できないため、要素の追加、挿入、削除はできません。 主な利用場面は、関数の戻り値として複数の値を返す場合などです。

# タプルの要素へのアクセス
print(my_tuple[1]) # apple

レンジ (range)

レンジは、連続した整数の範囲を表すイテラブル(繰り返し可能)オブジェクトです。range() 関数を使用して作成します。 range() の第1引数に終了値、第2引数に開始値、第3引数にステップ数を指定します。

# レンジの定義と型確認
numbers = range(1, 10, 2)  # 1 から 9 まで、2 ずつ増加する整数列
print(type(numbers))  # <class 'range'>

# レンジを使ったループ処理
for i in numbers:
    print(i)

pydocument.hatenablog.com

5. マッピング

辞書 (dict)

辞書は、キーと値のペアを格納するデータ構造です。{} を使用して作成し、キーと値のペアは : で区切り、各ペアはカンマで区切ります。キーは一意である必要がありますが、値は重複しても構いません。

# 辞書の定義と型確認
person = {"name": "Alice", "age": 30, "city": "New York"}
print(type(person))  # <class 'dict'>

辞書に対する操作は以下のとおりです。

  • 要素へのアクセス: キーを使用して対応する値にアクセスできます。
  • 要素の追加/更新: 新しいキーと値のペアを追加したり、既存のキーの値を更新したりできます。
  • 要素の削除: del キーワードを使用してキーと値のペアを削除できます。
  • キーの存在確認: in キーワードを使用してキーが辞書に存在するかどうかを確認できます。
# 辞書操作の例
print(person["name"])  # "Alice"
person["age"] = 31  # "age" の値を更新
person["job"] = "Engineer"  # 新しいキーと値のペアを追加
print(person)
del person["city"]  # "city" のキーと値のペアを削除
print(person)
print("name" in person)  # True

pydocument.hatenablog.com

6. 集合型

集合型は、重複しない要素の集まりを表現するデータ構造です。集合 (set) と凍結集合 (frozenset) の2種類があります。

集合 (set)

集合は、変更可能な要素の集合です。{} を使用して作成するか、set() 関数にリストなどのイテラブルオブジェクトを渡して作成します。

# 集合の定義と型確認
my_set = {1, 2, 3, 2, 1}  # 重複する要素は自動的に削除される
print(my_set)  # {1, 2, 3}
print(type(my_set))  # <class 'set'>

another_set = set([3,4,4,5])
print(another_set)

集合に対しては、集合演算 (和集合、積集合、差集合など) を行うことができます。

  • 和集合: | 演算子または union() メソッド
  • 積集合: & 演算子または intersection() メソッド
  • 差集合: - 演算子または difference() メソッド
# 集合演算の例
set1 = {1, 2, 3}
set2 = {3, 4, 5}
print(set1 | set2)  # {1, 2, 3, 4, 5} (和集合)
print(set1 & set2)  # {3} (積集合)
print(set1 - set2)  # {1, 2} (差集合)

凍結集合 (frozenset)

凍結集合は、変更不可能な要素の集合です。frozenset() 関数を使用して作成します。集合演算は可能ですが、要素の追加や削除はできません。

# 凍結集合の定義と型確認
my_frozenset = frozenset({1, 2, 3})
print(type(my_frozenset))  # <class 'frozenset'>

7. バイナリ型

バイナリ型は、バイトデータを扱うためのデータ型です。バイト列、バイト配列、メモリビューの3種類があります。

バイト列 (bytes)

バイト列は、変更不可能なバイトの並びです。b プレフィックスを付けた文字列リテラル、または bytes() 関数を使用して作成します。

# バイト列の定義と型確認
byte_data = b"hello"
print(type(byte_data))  # <class 'bytes'>
# bytes([104, 101, 108, 108, 111]) でも可

バイト配列 (bytearray)

バイト配列は、変更可能なバイトの並びです。bytearray() 関数を使用して作成します。

# バイト配列の定義と型確認
mutable_data = bytearray(b"world")
print(type(mutable_data))  # <class 'bytearray'>

バイト配列は変更可能なため、要素の変更、追加、削除が可能です。 バイトデータを書き換える必要がある場合に有用です。

# バイト配列の要素を変更
mutable_data[0] = ord('W')  # ord() は文字の Unicode コードポイントを返す
print(mutable_data)

メモリビュー (memoryview)

メモリビューは、バイト列やバイト配列などのオブジェクトの内部データへの参照を提供します。memoryview() 関数を使用して作成します。メモリビューを使用すると、データのコピーを作成せずに、元のデータの一部を読み書きできます。

# メモリビューの定義と型確認
view = memoryview(byte_data)
print(type(view)) # <class 'memoryview'>
print(view[0])

[PR]

click.linksynergy.com

click.linksynergy.com

click.linksynergy.com




以上の内容はhttps://pydocument.hatenablog.com/entry/2023/03/21/141745より取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14