PR

【Python】int() float() str() データ型変換を3分でわかりやすく解説

Python

本ページでは、Pythonにおけるデータ型変換の方法を3分で理解できるようわかりやすく解説します。

参考 Pythonはどんな言語?

そもそもなぜデータ型変換が必要なの?というところから、int関数・float関数・str関数などの組み込み関数の使い方まで網羅的に整理してご説明します。

このページで学べる内容
  • データ型変換とは?
  • データ型変換の必要性/利用シーン
  • データ型変換を行う主な組み込み関数
    • int関数
    • float関数
    • str関数
    • bool関数
    • list関数
    • tuple関数
    • set関数
    • dict関数
    • type関数

Pythonエンジニアを目指す方であれば知らないと恥ずかしい超・基本知識の1つです。是非最後までご覧ください

スポンサーリンク

Python:データ型変換とは?

データ型変換とは、その名の通り変数やオブジェクトのデータ型を別のデータ型に変換することです。

Python データ型変換
図1:データ型変換のイメージ図

参考 データ型とは?

文字列として扱っていた変数を、数値型として扱うようにしたり、その逆で数値型を文字型として扱えるようにしたりするのがデータ型変換です。

人によっては、単に「型変換」と呼んだり、「キャストする」と言ったりしますが、どれも意味は同じです。

データ型変換の必要性

そもそもなぜデータ型変換を行う必要があるのでしょうか。

理由は大きく以下の4つです。

Pythonにおけるデータ型変換の必要性
  • 演算の正確性
  • 関数やメソッドの引数としての要件
  • データの表現形式の変換
  • データの処理効率

演算の正確性

Pythonの演算子は、オペランドの型によって異なる動作をします。

例えば、文字列の加算("5" + "7")は結果として文字列の連結("57")を行いますが、整数の加算(5 + 7)は算術の加算(12)を行います。これらの間違った結果を避けるためには、適切なデータ型に変換する必要があります。

a = "5"
b = "7"
print(a + b)  # これは文字列の57を出力します

# 変換後
a = int(a)
b = int(b)
print(a + b)  # これは整数の12を出力します

参考 Pythonの変数の基本 / print関数の使い方

関数やメソッドの引数としての要件

Pythonの関数やメソッドは特定の型の引数を必要とすることがあります。

適切な型に変換せずにこれらの関数やメソッドを呼び出すと、エラーが発生します。したがって、データ型を適切に変換することで、これらの問題を防ぐことができます。

num_str = "123"
print(num_str.zfill(5))  # これは00123を出力します

# 変換後
num_str = int(num_str)
# これはエラーを引き起こします: 'int' object has no attribute 'zfill'
# print(num_str.zfill(5))

上記のzfill()は文字列型のメソッドで、整数型には存在しません。したがって、適切な型に変換しないとエラーが発生します。

参考 メソッドとは?(クラスの基本)

データの表現形式の変換

データを異なる形式で表現する必要がある場合に、データ型の変換が必要となります。

例えば、ユーザからの入力を整数として受け取り、それを文字列としてファイルに書き込む場合などです。

user_input = input("数値を入力してください: ")  # ユーザーが5を入力したとします

with open("output.txt", "w") as f:
    # user_inputは文字列なのでエラーは発生しません
    f.write(user_input)

input()関数はユーザーからの入力を文字列として返すため、そのままwrite()メソッドでファイルに書き込むことができます。しかし、input()関数の結果を整数として扱う場合には、それを再び文字列に変換する必要があります。

参考 関数とは?

データの処理効率

異なるデータ型は異なる効率性を持つことがあります。

例えば、リストとセットではメンバーシップテスト(要素が含まれているかどうかのチェック)の効率性が異なります。リストではこれはO(n)の操作であるのに対し、セットではこれはO(1)の操作です。したがって、特定の操作を効率的に行うためには、適切なデータ型に変換することが有用な場合があります。

import time

n = 10**6  # 大きな数値
lst = list(range(n))
s = set(lst)

start = time.time()
print(n in lst)  # リストでは線形探索
print("リストの探索時間:", time.time() - start)

start = time.time()
print(n in s)  # セットでは定数時間の探索
print("セットの探索時間:", time.time() - start)

この例では、リストとセットのメンバーシップテストの効率性の違いを示しています。リストでは要素の存在確認は線形時間がかかりますが、セットでは一定時間で完了します。

大きなデータ集合に対する操作を行う場合、適切なデータ型に変換することで処理速度を大幅に改善することが可能です。

参考 Pythonのデータ構造(リスト/セット)

データ型変換を行う主な組み込み関数

データ型変換の基本・必要性を学習してきました。ここからは、実際にデータ型の変換を行う組み込み関数の利用方法をサンプルコード付きでご説明します。

データ型変換を行う組み込み関数
  • int()関数: 文字列または数値を整数に変換
  • float()関数: 文字列または数値を浮動小数点数に変換
  • str()関数: 任意のオブジェクトを文字列に変換
  • bool()関数: 任意のオブジェクトをブール値に変換
  • list()関数、tuple()関数、set()関数、dict()関数: リスト・タプル・セット・辞書へ変換
組み込み関数とは?

Pythonの組み込み関数は、Pythonにデフォルトで組み込まれている関数のことを指します。これらの関数は追加のインポート操作なしに、いつでもどこでも利用可能です。

Pythonの標準ライブラリには、多くの便利な組み込み関数が含まれています。

主な組み込み関数
  • print(): 引数として与えられた値を標準出力(通常はコンソール)に表示します。
  • len(): コレクション(リストやタプル、辞書、セット、文字列など)の要素数を返します。
  • max(), min(), sum(): 数値のリストやタプルなどから、それぞれ最大値、最小値、合計値を返します。

これらの組み込み関数は、日常的なプログラミングタスクを容易にするための基本的なツールとして用いられます。これらの関数はPythonの重要な部分を形成しており、Pythonプログラムのあらゆる部分で頻繁に使われます。

Python:int関数

文字列または数値を整数に変換します。

s = "123"
i = int(s)  # 文字列から整数への変換
print(i)  # これは123を出力します

f = 123.456
i = int(f)  # 浮動小数点数から整数への変換
print(i)  # これは123を出力します。小数部は切り捨てられます。

Python:str関数

任意のオブジェクトを文字列に変換します。

i = 123
s = str(i)  # 整数から文字列への変換
print(s)  # これは"123"を出力します

f = 123.456
s = str(f)  # 浮動小数点数から文字列への変換
print(s)  # これは"123.456"を出力します

Python:float関数

文字列または数値を浮動小数点数に変換します。

s = "123.456"
f = float(s)  # 文字列から浮動小数点数への変換
print(f)  # これは123.456を出力します

i = 123
f = float(i)  # 整数から浮動小数点数への変換
print(f)  # これは123.0を出力します

Python:bool()関数

任意のオブジェクトをブール値に変換します。

i = 0
b = bool(i)  # 整数からブール値への変換。0はFalse、0以外はTrueになります。
print(b)  # これはFalseを出力します

s = "Hello"
b = bool(s)  # 文字列からブール値への変換。空文字列はFalse、それ以外はTrueになります。
print(b)  # これはTrueを出力します
bool関数の処理
  • 数値: 0はFalse、それ以外の数値(負の数値を含む)はTrueになります。
  • 文字列: 空文字列("")はFalse、それ以外の文字列はTrueになります。
  • リスト・タプル・セット・辞書: 空(要素がない)はFalse、それ以外(一つ以上の要素を含む)はTrueになります。
  • None: NoneFalseになります。
# 数値の例
print(bool(0))  # これはFalseを出力します
print(bool(1))  # これはTrueを出力します
print(bool(-1))  # これはTrueを出力します

# 文字列の例
print(bool(""))  # これはFalseを出力します
print(bool("Hello"))  # これはTrueを出力します

# リスト、タプル、セット、辞書の例
print(bool([]))  # これはFalseを出力します
print(bool([1, 2, 3]))  # これはTrueを出力します
print(bool(()))  # これはFalseを出力します
print(bool((1, 2, 3)))  # これはTrueを出力します
print(bool({}))  # これはFalseを出力します
print(bool({1: "one", 2: "two"}))  # これはTrueを出力します

# Noneの例
print(bool(None))  # これはFalseを出力します

Python:list()関数

任意のデータ構造(リスト、タプル、セット、辞書、文字列など)をリストに変換します。

t = (1, 2, 3)
l = list(t)  # タプルからリストへの変換
print(l)  # これは[1, 2, 3]を出力します

s = "Hello"
l = list(s)  # 文字列からリストへの変換。各文字がリストの要素になります。
print(l)  # これは['H', 'e', 'l', 'l', 'o']を出力します

Python:tuple()関数

任意のデータ構造をタプルに変換します。

l = [1, 2, 3]
t = tuple(l)  # リストからタプルへの変換
print(t)  # これは(1, 2, 3)を出力します

s = "Hello"
t = tuple(s)  # 文字列からタプルへの変換。各文字がタプルの要素になります。
print(t)  # これは('H', 'e', 'l', 'l', 'o')を出力します

Python:set()関数

任意のデータ構造をセットに変換します。

セットは順序を保持せず、重複した要素を取り除きます。

l = [1, 2, 2, 3, 3, 3]
s = set(l)  # リストからセットへの変換。重複した要素は取り除かれます。
print(s)  # これは{1, 2, 3}を出力します

s = "Hello"
s = set(s)  # 文字列からセットへの変換。各文字がセットの要素になります。
print(s)  # これは{'H', 'e', 'l', 'o'}を出力します。重複した'l'は取り除かれます。

Python:dict()関数

2要素のシーケンス(例えば、2要素のリストやタプル)を要素に持つデータ構造を辞書に変換します。各シーケンスの最初の要素がキー、2番目の要素が値となります。

l = [('one', 1), ('two', 2), ('three', 3)]
d = dict(l)  # リストから辞書への変換
print(d)  # これは{'one': 1, 'two': 2, 'three': 3}を出力します

t = (('one', 1), ('two', 2), ('three', 3))
d = dict(t)  # タプルから辞書への変換
print(d)  # これは{'one': 1, 'two': 2, 'three': 3}を出力します

以上がPythonの主要なコレクション型への変換関数の使用方法です。これらの関数を使用して、必要に応じてデータ型を容易に変換することができます。

データ型判定:type関数

Pythonの type() 関数は、引数として与えられたオブジェクトの型を返します。

この関数はデバッグや、変数の型が何であるかを確認する際に特に役立ちます。また、特定の型を期待する関数やメソッドがある場合、その引数が適切な型であることを検証するためにも使われます。

x = 10
print(type(x))  
# <class 'int'>を出力


y = "Hello, world!"
print(type(y)) 
# <class 'str'>を出力


z = [1, 2, 3, 4, 5]
print(type(z)) 
# <class 'list'>を出力


a = {"one": 1, "two": 2, "three": 3}
print(type(a))  
# <class 'dict'>を出力

上記のコードでは、type() 関数はそれぞれ整数、文字列、リスト、辞書の型を返しています。

このように、type() 関数を使用すると、特定の変数がどのような型を持っているかを簡単に調べることができます。

発展編 type関数とisinstance関数

Python:データ型変換のまとめ

このページのまとめ
  • データ型変換はあるデータ型から別のデータ型への値の変換を行うこと
  • Pythonではデータ型変換は組み込み関数を使用して行う
  • 主な組み込み関数には以下のものが存在する:
    • int(): 他の数値型や適切な形式の文字列を整数に変換
    • float(): 他の数値型や適切な形式の文字列を浮動小数点数に変換
    • str(): 他のデータ型を文字列に変換
    • bool(): 他のデータ型をブール値に変換
    • list(): イテラブルをリストに変換
    • tuple(): イテラブルをタプルに変換
    • set(): イテラブルをセットに変換
    • dict(): キーと値のペアを含むイテラブル(例:2要素のタプルのリスト)を辞書に変換
  • データ型変換はプログラムの異なる部分で作成されたデータを統一したりデータを特定の形式で扱う必要があるときに役立つ
  • データ型変換の注意点:
    • 変換が可能な値を関数に渡さなければならない
      例えば数値に変換できない文字列をint()float()に渡すとエラーになる
    • bool()関数は任意の値をブール値に変換しますが、どのような値がTrueまたはFalseに変換されるかを理解しておくことが重要です。

始めてPythonを勉強するのは結構難しいですよね。

でもその悩みを抱えているのは一人じゃありません。全てのPython使いが同じ道を進んできました。

Pythonをはじめとするプログラミングスキルを武器に、時間と場所に捉われない自由な生き方を目指してみませんか?今すぐ行動したい方は以下の記事をチェック!

読者料典 Python入門:学習カリキュラム ←こちらから!

このWebサイトは現役のエンジニアが以下3点を目的として運営しています。

  1. 勉強:一度理解した内容を忘れないように。
    → アウトプットは「最強のインプット」である! 
  2. 備忘:忘れたとしても後から見返せるように。
    → 未来の自分への「お手紙」を書いています。 
  3. 共有:〇〇ってこうだったんだ!の感動をシェアできるように。
    → あなたの知識は誰かにとっての「価値ある情報」です。 

副業ブログの始め方はこちらから

スポンサーリンク
Python
シェアする
ビズドットオンラインをフォローする
タイトルとURLをコピーしました