Python3でデータ型を変換する方法
序章
Pythonでは、データ型を使用して、特定の種類のデータを分類し、その型に割り当てることができる値と、その型に対して実行できる操作を決定します。 プログラミング時には、値を別の方法で操作するために、型間で値を変換する必要がある場合があります。 たとえば、数値を文字列と連結したり、整数値として初期化された数値の小数点以下の桁数を表す必要がある場合があります。
このチュートリアルでは、数値、文字列、タプル、リストの変換について説明し、さまざまなユースケースに慣れるための例を示します。
前提条件
Python 3をインストールし、コンピューターまたはサーバーにプログラミング環境をセットアップする必要があります。 プログラミング環境をセットアップしていない場合は、ローカルプログラミング環境またはサーバー上のプログラミング環境のインストールおよびセットアップガイドを参照して、オペレーティングに適したものにすることができます。システム(Ubuntu、CentOS、Debianなど)
数値タイプの変換
Pythonには、数値データ型があります。整数と浮動小数点数または浮動小数点数です。 他の人のコードで作業していて、整数をfloatに、またはその逆に変換する必要がある場合や、本当に必要なのがfloatであるときに整数を使用していることに気付く場合があります。 Pythonには、整数を浮動小数点数に、浮動小数点数を整数に簡単に変換できるメソッドが組み込まれています。
整数から浮動小数点数への変換
Pythonのメソッドfloat()
は、整数を浮動小数点数に変換します。 この関数を使用するには、括弧内に整数を追加します。
情報:このチュートリアルのサンプルコードに従うには、python3
コマンドを実行して、ローカルシステムでPythonインタラクティブシェルを開きます。 次に、>>>
プロンプトの後に例を追加して、例をコピー、貼り付け、または編集できます。
float(57)
この場合、57
は57.0
に変換されます。
これを変数とともに使用することもできます。 f
を57
と等しいと宣言してから、新しいフロートを出力してみましょう。
f = 57
print(float(f))
Output57.0
float()
関数を使用すると、整数を浮動小数点数に変換できます。
フロートを整数に変換する
Pythonには、浮動小数点数を整数に変換する組み込み関数int()
もあります。
int()
関数は、float()
関数と同様に機能します。括弧内に浮動小数点数を追加して、整数に変換できます。
int(390.8)
この場合、390.8
は390
に変換されます。
これを変数で使用することもできます。 b
を125.0
に等しいと宣言し、c
を390.8
に等しいと宣言してから、新しいフロートを出力します。
b = 125.0
c = 390.8
print(int(b))
print(int(c))
Output125
390
int()
関数を使用して浮動小数点数を整数に変換する場合、Pythonは浮動小数点数の小数と残りの数値を切り捨てて整数を作成します。 390.8を391に切り上げたい場合でも、Pythonはint()
関数を介してこれを行いません。
除算によって変換された数値
Python 3では、関連する商は、 Python 2 にはありませんが、 Division を実行すると、整数から浮動小数点数に変換されます。 つまり、5を2で割ると、Python 3では答え(2.5)のfloatが得られます。
a = 5 / 2
print(a)
Output2.5
Python 2では、2つの整数を処理していたため、代わりに5 / 2 = 2
という整数が返されます。 Python2とPython3の違いの詳細については、「 Python2とPython3:実用上の考慮事項」をお読みください。
文字列による変換
文字列は、1つ以上の文字(文字、数字、記号)のシーケンスです。 文字列はコンピュータプログラムのデータの一般的な形式であり、特にユーザー生成データを取り込む場合は、文字列を数値に変換したり、数値を文字列に変換したりする必要がある場合があります。
数値を文字列に変換する
str()
メソッドを使用して、数値を文字列に変換できます。 メソッドの括弧に数値または変数を渡すと、その数値が文字列値に変換されます。
まず、整数の変換を見てみましょう。 整数12
を文字列値に変換するには、12
をstr()
メソッドに渡すことができます。
str(12)
ターミナルウィンドウでpython
コマンドを使用してPythonインタラクティブシェルでstr(12)
を実行すると、次の出力が表示されます。
Output'12'
数値12を囲む引用符は、数値が整数ではなく文字列値になったことを示します。
変数を使用すると、整数を文字列に変換することがどれほど実用的であるかがわかります。 ユーザーの毎日のプログラミングの進捗状況を追跡し、一度に何行のコードを記述しているかを入力しているとします。 このフィードバックをユーザーに示し、文字列と整数の値を同時に出力します。
user = "Sammy"
lines = 50
print("Congratulations, " + user + "! You just wrote " + lines + " lines of code.")
このコードを実行すると、次のエラーが発生します。
OutputTypeError: can only concatenate str (not "int") to str
Pythonでは文字列と整数を連結できないため、変数lines
を文字列値に変換する必要があります。
user = "Sammy"
lines = 50
print("Congratulations, " + user + "! You just wrote " + str(lines) + " lines of code.")
これで、コードを実行すると、ユーザーの進捗状況を祝福する次の出力が表示されます。
OutputCongratulations, Sammy! You just wrote 50 lines of code.
整数から文字列ではなく、浮動小数点数を文字列に変換する場合は、同じ手順と形式に従います。 floatをstr()
メソッドに渡すと、floatの文字列値が返されます。 float値自体または変数のいずれかを使用できます。
print(str(421.034))
f = 5524.53
print(str(f))
Output421.034
5524.53
文字列と連結することで、それが正しいことを確認するためにテストできます。
f = 5524.53
print("Sammy has " + str(f) + " points.")
OutputSammy has 5524.53 points.
連結がエラーなしで実行されたため、floatが適切に文字列に変換されたことを確認できます。
文字列を数値に変換する
文字列は、int()
およびfloat()
メソッドを使用して数値に変換できます。
文字列に小数点以下の桁数がない場合は、int()
メソッドを使用して文字列を整数に変換することをお勧めします。
毎日書かれたコード行を追跡しているユーザーSammyの例を使用してみましょう。 これらの値を数学で操作して、ユーザーにより興味深いフィードバックを提供したい場合がありますが、これらの値は現在、文字列に格納されています。
lines_yesterday = "50"
lines_today = "108"
lines_more = lines_today - lines_yesterday
print(lines_more)
OutputTypeError: unsupported operand type(s) for -: 'str' and 'str'
2つの数値が文字列に格納されていたため、エラーが発生しました。 減算用のオペランド-
は、2つの文字列値の有効なオペランドではありません。
文字列を整数に変換するint()
メソッドを含めるようにコードを変更して、元々文字列であった値を使用して計算できるようにしましょう。
lines_yesterday = "50"
lines_today = "108"
lines_more = int(lines_today) - int(lines_yesterday)
print(lines_more)
Output58
変数lines_more
は自動的に整数になり、この例では数値58に等しくなります。
int()
メソッドの代わりにfloat()
メソッドを使用して、上記の例の数値を浮動小数点値に変換することもできます。 58
の出力を受け取る代わりに、フロートである58.0
の出力を受け取ります。
ユーザーSammyは10進値でポイントを獲得しています
total_points = "5524.53"
new_points = "45.30"
new_total_points = total_points + new_points
print(new_total_points)
Output5524.5345.30
この場合、+
オペランドを2つの文字列で使用することは有効な操作ですが、2つの数値を加算するのではなく、2つの文字列を連結します。 したがって、2つの値を並べて配置するだけなので、出力は異常に見えます。
float()
メソッドを使用して計算を実行する前に、これらの文字列をfloatに変換する必要があります。
total_points = "5524.53"
new_points = "45.30"
new_total_points = float(total_points) + float(new_points)
print(new_total_points)
Output5569.83
2つの文字列をfloatに変換したので、45.30
を5524.53
に追加する予想される結果を受け取ります。
小数点以下の桁数の文字列値を整数に変換しようとすると、エラーが発生します。
f = "54.23"
print(int(f))
OutputValueError: invalid literal for int() with base 10: '54.23'
文字列の10進値をint()
メソッドに渡すと、整数に変換されないため、エラーが発生します。
文字列を数値に変換すると、処理しているデータ型をすばやく変更できるため、元々文字列としてキャストされた数値に対して操作を実行できます。
タプルとリストへの変換
メソッドlist()
およびtuple()
を使用して、それらに渡された値をそれぞれリストおよびタプルデータ型に変換できます。 Pythonの場合:
- list は、角括弧
[ ]
内に含まれる要素の変更可能な順序付けられたシーケンスです。 - タプルは、括弧
( )
内に含まれる要素の不変の順序付けられたシーケンスです。
タプルへの変換
リストをタプルに変換することから始めましょう。 リストは不変のデータ型であるため、リストをタプルに変換すると、作成するプログラムを大幅に最適化できます。 メソッドtuple()
を使用すると、渡された値のタプルバージョンが返されます。
print(tuple(['pull request', 'open source', 'repository', 'branch']))
Output('pull request', 'open source', 'repository', 'branch')
アイテムが角かっこではなく括弧内に含まれるようになったため、出力にタプルが出力されていることがわかります。
リストを表す変数でtuple()
を使用してみましょう。
sea_creatures = ['shark', 'cuttlefish', 'squid', 'mantis shrimp']
print(tuple(sea_creatures))
Output('shark', 'cuttlefish', 'squid', 'mantis shrimp')
ここでも、リスト値が括弧で示されたタプル値に変更されていることがわかります。 文字列を含め、反復可能なタイプをタプルに変換できます。
print(tuple('Sammy'))
Output('S', 'a', 'm', 'm', 'y')
文字列を反復処理できるため、tuple()
メソッドを使用して文字列をタプルに変換できます。 ただし、整数や浮動小数点数などの反復不可能なデータ型では、型エラーが発生します。
print(tuple(5000))
OutputTypeError: 'int' object is not iterable
tuple(str(5000))
のように、整数を文字列に変換してからタプルに変換することは可能ですが、複雑な変換よりも読み取り可能なコードを選択することをお勧めします。
リストへの変換
値、特にタプルをリストに変換すると、その値の変更可能なバージョンが必要な場合に役立ちます。
list()
メソッドを使用して、次のタプルをリストに変換します。 リストを作成するための構文は括弧を使用するため、list()
メソッド、この場合はprint()
メソッドの括弧も必ず含めてください。
print(list(('blue coral', 'staghorn coral', 'pillar coral')))
Output['blue coral', 'staghorn coral', 'pillar coral']
角かっこは、list()
メソッドを介して渡された元のタプル値からリストが返されたことを示します。
コードを読みやすくするために、変数を使用して括弧のペアの1つを削除できます。
coral = ('blue coral', 'staghorn coral', 'pillar coral')
list(coral)
list(coral)
を印刷すると、上記と同じ出力が得られます。
タプルと同様に、文字列はリストに変換できます。
print(list('shark'))
Output['s', 'h', 'a', 'r', 'k']
ここで、文字列'shark'
がリストに変換され、元の値の変更可能なバージョンが提供されます。
結論
このPythonチュートリアルでは、主に組み込みメソッドを使用して、いくつかの重要なネイティブデータ型を他のデータ型に変換する方法を示しました。 Pythonでデータ型を変換できることで、プログラムを作成する際の柔軟性がさらに高まります。