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

前書き

Pythonでは、https://www.digitalocean.com/community/tutorials/understanding-data-types-in-python-3 [data types]を使用して特定のデータタイプを分類し、割り当てることができる値を決定しますタイプおよび実行できる操作。 プログラミングするとき、値を異なる方法で操作するために、型間で値を変換する必要がある場合があります。 たとえば、数値を文字列と連結したり、整数値として初期化された数値の小数点以下の桁を表す必要がある場合があります。

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

数値型の変換

Pythonには、2つのhttps://www.digitalocean.com/community/tutorials/understanding-data-types-in-python-3#numbers[number data types]があります:https://www.digitalocean.com/community / tutorials / understanding-data-types-in-python-3#integers [integers]およびhttps://www.digitalocean.com/community/tutorials/understanding-data-types-in-python-3#floating-point-数値[浮動小数点数]またはフロート。 他の人のコードで作業しているときに、整数を浮動小数点数に変換する必要がある場合や、実際に必要なのが浮動小数点数であるときに整数を使用している場合があります。 Pythonには組み込みメソッドがあり、整数を簡単に浮動小数点数に変換したり、浮動小数点数を整数に変換したりできます。

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

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

float(57)

この場合、「+ 57+」は「57.0」に変換されます。

変数でこれを使用することもできます。 `+ f `を ` 57 +`と等しいものとして宣言し、新しいフロートを出力します。

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

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

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

Pythonには、floatを整数に変換する組み込み関数 `+ 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では、https://www.digitalocean.com/community/tutorials/how-to-do-math-in-python-3-with-operators#multiplication-and-を実行すると、関連する商が整数から浮動小数点数に変換されますdivision [division]ただし、https://www.digitalocean.com/community/tutorials/python-2-vs-python-3-practical-considerations-2 [Python 2]にはありません。 つまり、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。

文字列を使用した変換

  • https://www.digitalocean.com/community/tutorial_series/working-with-strings-in-python-3 [string] *は、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'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.

整数を文字列に変換するのではなく、フロートを文字列に変換する場合は、同じ手順と形式に従います。 `+ str()+`メソッドにフロートを渡すと、フロートの文字列値が返されます。 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()`メソッドを使用して、上記の例の数値を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では:

  • * https://www.digitalocean.com/community/tutorials/understanding-lists-in-python-3 [list] *は、角括弧 `+ [] +`に含まれる可変の順序付けされた要素のシーケンスです。

  • * https://www.digitalocean.com/community/tutorials/understanding-tuples-in-python-3 [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でデータ型を変換できると、プログラムを作成する際の柔軟性が向上します。

前の投稿:Ubuntu 18.04でユーザーを追加および削除する方法
次の投稿:Goの遅延を理解する