Pythonの異種リスト(文字列と数値が混在)から最小値・最大値を取得する方法
Pythonのリストは、文字列と数値を同時に格納することができます。このようなリストは「異種リスト(ヘテロジニアスリスト)」と呼ばれます。本記事では、こうした混在リストの中から、数値のみを対象に最小値と最大値を求める方法を解説します。
最小値を求める方法
まずは最小値の取得方法です。ここでは isinstance() 関数を使って、リスト内に含まれる整数だけを抽出し、その結果に対して組み込み関数 min() を適用することで最小値を求めます。
コード例
listA = [12, 'Sun', 39, 5, 'Wed', 'Thus']
# 元のリスト
print("元のリスト : ", listA)
# 整数のみを抽出して最小値を取得
res = min(i for i in listA if isinstance(i, int))
# 結果を出力
print("リスト内の最小値 : ", res)
実行結果
上記のコードを実行すると、次のような出力が得られます。
元のリスト : [12, 'Sun', 39, 5, 'Wed', 'Thus'] リスト内の最小値 : 5
ジェネレータ式を使うことで、中間リストを作成せずに効率的にフィルタリングできる点もポイントです。
最大値を求める方法
最大値についても、基本的には上記と同じ考え方で対応できます。ただしここでは、max() 関数にラムダ式(lambda)を組み合わせた別のアプローチを紹介します。キー関数として (isinstance(i, int), i) のタプルを返すことで、文字列よりも数値を優先的に比較し、その中で最大の値を取得しています。
コード例
listA = [12, 'Sun', 39, 5, 'Wed', 'Thus']
# 元のリスト
print("元のリスト : ", listA)
# max関数とlambdaを組み合わせて最大値を取得
res = max(listA, key=lambda i: (isinstance(i, int), i))
# 結果を出力
print("リスト内の最大値 : ", res)
実行結果
上記のコードを実行すると、次のような出力が得られます。
元のリスト : [12, 'Sun', 39, 5, 'Wed', 'Thus'] リスト内の最大値 : 39
まとめ
異種リストから数値の最小値・最大値を取得するには、isinstance() による型判定が鍵となります。min() や max() をそのまま使うと文字列との比較でエラーになるため、事前に型でフィルタリングするか、key 引数で比較基準を指定することが重要です。状況に応じて、ジェネレータ式による抽出とラムダ式によるソートキー指定を使い分けるとよいでしょう。
-
Pythonで辞書の値(リスト)をクリアする2つの方法
この記事では、値としてリストを持つ辞書を扱い、そのリストの中身を空にする(クリアする)方法について解説します。アプローチは主に2つあります。ひとつは clear() メソッドを使う方法、もうひとつは辞書内包表記を使って各キーに空のリストを代入する方法です。方法1:ループと clear() メソッドを使うまず、辞書の各キーに対してループ処理を行い、値であるリストに対して clear() メソッドを呼び出します。この方法では元の辞書オブジェクトを保持したまま、リストの中身だけを空にできます。x1 = {Apple : [4,6,9,2], Grape : [7,8,2,1], Orange : [
-
Pythonでリストの平均値を求める方法
Pythonには、複数の要素の合計を簡単に計算できる組み込み関数 sum() が用意されています。ここでは、この関数を使ってリスト内のすべての数値の合計を求め、その後、合計を要素数で割ることで平均値を計算します。 アルゴリズム ステップ1:「リストのサイズ」を入力する ステップ2:「要素」を入力する ステップ3:sum関数を使用して、すべての数値の合計を計算する ステップ4:平均値を計算する サンプルコード # リストの平均値を求める A=list() n=int(input(Enter the size of the List ::)) print(Enter the number :