【Python】タプルのリスト内の要素をfloat型に変換する方法
タプルのリスト内の要素をfloat値に変換したい場合、isalpha() メソッドを使うと、その要素がアルファベット(文字列)かどうかを簡単に判別できます。そして、数値として扱える要素だけを float() 関数で浮動小数点数に変換するという流れになります。
このアプローチにより、「45」のような数字の文字列はfloat型に変換されつつ、「Jane」のような名前などの文字列はそのまま保持できます。以下に具体的な実装例を示します。
サンプルコード
my_list = [("45", "Jane"), ("11", "Will"), ("37.68", "86.78"), ("Rob", "89.90")]
print("元のリスト : ")
print(my_list)
my_result = []
for tup in my_list:
temp_val = []
for elem in tup:
if elem.isalpha():
temp_val.append(elem)
else:
temp_val.append(float(elem))
my_result.append((temp_val[0], temp_val[1]))
print("変換後のリスト : ")
print(my_result)
実行結果
元のリスト :
[('45', 'Jane'), ('11', 'Will'), ('37.68', '86.78'), ('Rob', '89.90')]
変換後のリスト :
[(45.0, 'Jane'), (11.0, 'Will'), (37.68, 86.78), ('Rob', 89.9)]
コードの解説
まず、複数のタプルを含むリストを定義し、コンソールに表示して中身を確認します。
変換結果を格納するための空のリスト
my_resultを用意します。外側の for ループでタプルを1つずつ取り出し、内側の for ループでタプル内の各要素を順番に処理します。処理用の一時リスト
temp_valもここで作成します。各要素に対して
isalpha()メソッドを呼び出し、その要素がアルファベットのみで構成されているかどうかを判定します。判定結果がTrue(アルファベット)の場合は、要素をそのまま一時リストに追加します。
False(数値を含む文字列)の場合は、
float()関数で浮動小数点数に変換してから一時リストに追加します。最後に、処理済みの一時リストをタプルとして
my_resultに追加し、結果をコンソールに出力します。
補足:try/except を使ったより堅牢な方法
isalpha() は「記号や空白を含む文字列」なども数値と誤判定する可能性があるため、実務では例外処理を使う方法も有効です。
def to_float_or_keep(value):
try:
return float(value)
except ValueError:
return value
my_result = [tuple(to_float_or_keep(e) for e in tup) for tup in my_list]
print(my_result)
このように書くことで、実際にfloatへ変換できるものだけが変換され、それ以外は元の値がそのまま維持されるため、より安全で読みやすいコードになります。
-
【Python入門】リストを文字列に変換する4つの方法を徹底解説
本記事では、Pythonでリスト(list)型のデータを文字列(string)型に変換する方法について、代表的な4つのアプローチをサンプルコードとともにわかりやすく解説します。 問題設定 与えられたリストを、ひとつながりの文字列に変換することを目標とします。例えば、複数の文字列要素を持つリストを結合して、単一の文字列として扱いたいケースなどが該当します。 ここでは、以下の4つの異なるアプローチを順番に見ていきましょう。 方法1: 空の文字列への連結(forループ) 最も基本的な方法は、空の文字列を用意し、forループでリストの各要素を順番に連結していくやり方です。処理の流れが直感的で、初心者
-
Pythonでタプルのリストを辞書に変換する方法を解説
Pythonでは、キーと値のペアを持つタプルのリストを、簡単に辞書(dict)へ変換できます。本記事では、setdefault()メソッドやdict()コンストラクタを使った変換方法を、具体例とともにわかりやすく解説します。 変換のイメージ まずは、どのような変換が行われるのかを見てみましょう。タプルのリストの各要素の第1引数が辞書の「キー」に、第2引数が「値」に対応します。 入力: [(Adwaita, 5), (Aadrika, 5), (Babai, 37), (Mona, 7), (Sanj, 25), (Sakya, 30)] 出力: {Adwaita: 5, Aadr