Python 3でデータ型を変換する方法

前書き

Pythonでは、data typesを使用して、特定のタイプのデータを分類し、そのタイプに割り当てることができる値と、そのタイプに対して実行できる操作を決定します。 プログラミングするとき、値を異なる方法で操作するために、型間で値を変換する必要がある場合があります。 たとえば、数値を文字列と連結したり、整数値として初期化された数値の小数点以下の桁を表す必要がある場合があります。

このチュートリアルでは、数値、文字列、タプル、リストの変換について説明し、さまざまなユースケースに慣れるための例を提供します。

数値型の変換

Pythonには、integersfloating-point numbersまたはfloatの2つのnumber data typesがあります。 他の人のコードで作業しているときに、整数を浮動小数点数に変換する必要がある場合や、実際に必要なのが浮動小数点数であるときに整数を使用している場合があります。 Pythonには組み込みメソッドがあり、整数を簡単に浮動小数点数に変換したり、浮動小数点数を整数に変換したりできます。

整数から浮動小数点数への変換

Pythonのメソッドfloat()は、整数を浮動小数点数に変換します。 この関数を使用するには、括弧内に整数を追加します。

float(57)

この場合、5757.0に変換されます。

変数でこれを使用することもできます。 f57と等しいと宣言してから、新しいフロートを出力してみましょう。

f = 57
print(float(f))
Output57.0

float()関数を使用すると、整数を浮動小数点数に変換できます。

浮動小数点数から整数への変換

Pythonには、浮動小数点数を整数に変換する組み込み関数int()もあります。

int()関数は、float()関数と同様に機能します。括弧内に浮動小数点数を追加して、整数に変換できます。

int(390.8)

この場合、390.8390に変換されます。

これを変数とともに使用することもできます。 b125.0と等しく、c390.8と等しいと宣言してから、新しいフロートを出力します。

b = 125.0
c = 390.8

print(int(b))
print(int(c))
Output125
390

int()関数を使用して浮動小数点数を整数に変換する場合、Pythonは浮動小数点数の10進数と残りの数値を切り捨てて整数を作成します。 390.8を391に切り上げたい場合でも、Pythonはint()関数を介してこれを行いません。

除算で変換された数字

Python 3では、関連する商は、Python 2にはありませんが、divisionを実行すると、整数から浮動小数点数に変換されます。 つまり、Python 3で5を2で割ると、答え(2.5)に対してfloatが得られます。

a = 5 / 2
print(a)
Output2.5

Python 2では、2つの整数を処理していたため、代わりに5 / 2 = 2という整数が応答として返されます。 Pythonの違いの詳細については、「https://www.digitalocean.com/community/tutorials/python-2-vs-python-3-practical-considerations-2[Python 2 vs Python 3:Practical Considerations]」をお読みください。 2およびPython 3。

文字列を使用した変換

stringは、1つ以上の文字(文字、数字、記号)のシーケンスです。 文字列は、コンピュータープログラムのデータの一般的な形式であり、特にユーザー生成データを取り込む場合は、文字列を数字に変換したり、数字を文字列に変換したりする必要がある場合があります。

数値を文字列に変換する

str()メソッドを使用して、数値を文字列に変換できます。 メソッドの括弧に数値または変数を渡すと、その数値が文字列値に変換されます。

最初に整数の変換を見てみましょう。 整数12を文字列値に変換するには、12str()メソッドに渡すことができます。

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't convert 'int' object to str implicitly

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.

連結がエラーなしで実行されたため、フロートが適切に文字列に変換されたことを確認できます。

文字列を数値に変換する

文字列は、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.305524.53に追加する予想される結果を受け取ります。

小数点以下の文字列値を整数に変換しようとすると、エラーが表示されます。

f = "54.23"
print(int(f))
OutputValueError: invalid literal for int() with base 10: '54.23'

文字列の10進値をint()メソッドに渡すと、整数に変換されないため、エラーが発生します。

文字列を数値に変換すると、作業中のデータ型をすばやく変更できるため、元は文字列としてキャストされた数値に対して操作を実行できます。

タプルとリストへの変換

メソッドlist()およびtuple()を使用して、それらに渡された値をそれぞれリストおよびタプルのデータ型に変換できます。 Pythonでは:

  • listは、角括弧[ ]内に含まれる要素の変更可能な順序付けられたシーケンスです。

  • tupleは、括弧( )内に含まれる要素の不変の順序付けられたシーケンスです。

タプルへの変換

リストをタプルに変換することから始めましょう。 リストは不変データ型であるため、リストをタプルに変換すると、作成するプログラムを大幅に最適化できます。 メソッド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でデータ型を変換できると、プログラムを作成する際の柔軟性が向上します。