max【最大値】・min【最小値】3.4 / 3.8abs【絶対値】round【丸め】3.0divmod【商・剰余】pow【べき乗・剰余 (baseexp % mod)】3.8sum【合計】3.83.12 max【最大値】3.4 / 3.8min【最小値】3.4 / 3.8 メモ概要最大値・最小値を取得 順序関数の指定可〔 例 〕 複数の同じ値がある場合、先に現れた要素 list【リスト型】・tuple【タプル型】の最大値・最小値 〔 例 〕 そのまま指定 dict【辞書型】の最大値・最小値〔 例 〕 キーが対象:そのまま指定 値が対象:辞書ビュー(値)を指定 ( values【辞書ビュー取得 (値)】) 値が対象 (キーも取得):辞書ビュー (キー・値)を指定、順序関数にラムダ式で値比較を指定( items【辞書ビュー取得 (キー・値)】・lambda【ラムダ式】) 外部リンクPython 標準ライブラリ組み込み関数max(iterable, *[, key, default])・max(arg1, arg2, *args[, key])min(iterable, *[, key, default])・min(arg1, arg2, *args[, key]) 構文 max(iterable, *[, key, default3.4]) max(arg1, arg2, *args[, key]) min(iterable, *[, key, default3.4]) min(arg1, arg2, *args[, key]) 戻り値最大値 または 最小値 iterable対象イテラブル オブジェクト arg1・arg2対象要素 args対象要素 (3個目以降) key (キーワード引数)順序関数 (詳細は下記参照) None の指定可 3.8 default (キーワード引数)3.4iterableが空の場合のデフォルト返却値 (未指定:ValueError 例外) ※ 上側の構文の * は、キーワード引数との区切り (def【関数定義】 参照) 順序関数 引数名 (例)説明item要素戻り値説明比較用キー 例 print(max(1, 2)) # 出力:2 print(min(1, 2)) # 出力:1 print(max(1, 1.1)) # 出力:1.1 print(min(0.9, 1)) # 出力:0.9 print(max(2, -4, 6, -8)) # 出力:6 print(min(2, -4, 6, -8)) # 出力:-8 lst = [-1, 3, -5, 7, -9] print(max(lst)) # 出力:7 print(min(lst)) # 出力:-9 tpl = (-3, 6, -9, 12, -15) print(max(tpl)) # 出力:12 print(min(tpl)) # 出力:-15 dic = {'A': 3, 'B': 2, 'C': 1} # キーで比較 print(max(dic)) # 出力:C print(min(dic)) # 出力:A # 空のオブジェクト lst = [] # print(max(lst)) # ValueError 例外 # print(min(lst)) # ValueError 例外 print(max(lst, default=-999)) # 出力:-999 print(min(lst, default=999)) # 出力:999 例 (順序関数) # 順序関数 (1/4) def func_flag(n): return -n # 符号反転で比較 lst = [-1, 3, -5, 7, -9] print(max(lst)) # 出力:7 print(min(lst)) # 出力:-9 print(max(lst, key=func_flag)) # 出力:-9 print(min(lst, key=func_flag)) # 出力:7 print(max(-2, 4, -6, 8, -10)) # 出力:8 print(min(-2, 4, -6, 8, -10)) # 出力:-10 print(max(-2, 4, -6, 8, -10, key=func_flag)) # 出力:-10 print(min(-2, 4, -6, 8, -10, key=func_flag)) # 出力:8 # 順序関数 (2/4) def head(s): return s[0] # 先頭1文字 lst = ['z-1', 'z-2', 'z-3', 'a-3', 'a-2', 'a-1'] print(max(lst)) # 出力:z-3 print(min(lst)) # 出力:a-1 # 先頭1文字 (先に現れた要素) print(max(lst, key=head)) # 出力:z-1 print(min(lst, key=head)) # 出力:a-3 # 順序関数 組み込み関数:abs【絶対値】(3/4) lst = [-1, 3, -5, 7, -9] print(max(lst)) # 出力:7 print(min(lst)) # 出力:-9 print(max(lst, key=abs)) # 出力:-9 print(min(lst, key=abs)) # 出力:-1 print(max(-2, 4, -6, 8, -10)) # 出力:8 print(min(-2, 4, -6, 8, -10)) # 出力:-10 print(max(-2, 4, -6, 8, -10, key=abs)) # 出力:-10 print(min(-2, 4, -6, 8, -10, key=abs)) # 出力:-2 # 順序関数 組み込み型:int【整数型】(4/4) lst = ['1234', '234', '34', '5'] print(max(lst)) # 出力:5 print(min(lst)) # 出力:1234 print(max(lst, key=int)) # 出力:1234 print(min(lst, key=int)) # 出力:5 print(max('1234', '234', '34', '5')) # 出力:5 print(min('1234', '234', '34', '5')) # 出力:1234 print(max('1234', '234', '34', '5', key=int)) # 出力:1234 print(min('1234', '234', '34', '5', key=int)) # 出力:5 例 (dict【辞書型】の最大値・最小値) dic = {'data_1': -1, 'data_2': 3, 'data_3': -5, 'data_4': 7, 'data_5': -9} # キーが対象 print(max(dic)) # 出力:data_5 print(min(dic)) # 出力:data_1 # 値が対象 print(dic.values()) # 出力:dict_values([-1, 3, -5, 7, -9]) print(max(dic.values())) # 出力:7 print(min(dic.values())) # 出力:-9 # 値が対象 (キーも取得) print(dic.items()) # 出力:dict_items([('data_1', -1), ('data_2', 3), ('data_3', -5), ('data_4', 7), ('data_5', -9)]) print(max(dic.items(), key=lambda x: x[1])) # 出力:('data_4', 7) print(min(dic.items(), key=lambda x: x[1])) # 出力:('data_5', -9) abs【絶対値】メモ絶対値を取得 関連 round【丸め】3.0 外部リンク Python 標準ライブラリ組み込み関数abs(x) 構文 abs(x) 戻り値絶対値 x対象値 (数値型) 例 data = [1, 1.1, -2, -2.2] for x in data: print(abs(x)) # 出力:1 # 出力:1.1 # 出力:2 # 出力:2.2 round【丸め】3.0メモ丸めた値を取得 最も近い有効値に丸め (中間値は偶数値を優先) 3.0データ値として誤差が小さい 四捨五入 (中間値は0から遠い有効値へ) 2.0一定方向に偏る 浮動小数点数は不正確な為、結果が想定外となる場合あり (例参照) 関連 abs【絶対値】 外部リンク Python 標準ライブラリ組み込み関数round(number[, ndigits]) 構文 round(number[, ndigits]) 戻り値丸め値 number対象値 (整数・浮動小数点数) ndigits小数部の桁数 (省略:整数値へ丸め / 0≦:小数部を丸め / <0:整数部を丸め) 例 # 偶数値を優先 data = [ -1.5, # 出力:-2 -0.5, # 出力:0 0.5, # 出力:0 1.5, # 出力:2 2.5 # 出力:2 ] for x in data: print(round(x)) # 浮動小数点数の不正確性 (2.675 -> 2.67) data = [ 0.674, # 出力:0.67 0.675, # 出力:0.68 0.676, # 出力:0.68 2.674, # 出力:2.67 2.675, # 出力:2.67 2.676 # 出力:2.68 ] for x in data: print(round(x, 2)) # 小数部の桁数 x = 123.456 print(round(x, 2)) # 出力:123.46 print(round(x, 1)) # 出力:123.5 print(round(x, 0)) # 出力:123.0 print(round(x, -1)) # 出力:120.0 print(round(x, -2)) # 出力:100.0 # 誤差検証 # 0.0 + 0.1 + ... + 9.8 + 9.9 sum1 = 0 # そのまま合計 sum2 = 0 # 丸めて合計 sum3 = 0 # 四捨五入して合計 for n in range(100): x = n / 10 sum1 += x x2 = round(x) sum2 += x2 if (n % 5) == 0: x3 = round((x + 0.01)) else: x3 = round(x) sum3 += x3 print(x, x2, x3) # 出力: # 0.0 0 0 # 0.1 0 0 # 0.2 0 0 # 0.3 0 0 # 0.4 0 0 # 0.5 0 1 # 0.6 1 1 # 0.7 1 1 # 0.8 1 1 # 0.9 1 1 # 1.0 1 1 # 1.1 1 1 # 1.2 1 1 # 1.3 1 1 # 1.4 1 1 # 1.5 2 2 # 1.6 2 2 # 1.7 2 2 # 1.8 2 2 # 1.9 2 2 # # (省略) # # 8.0 8 8 # 8.1 8 8 # 8.2 8 8 # 8.3 8 8 # 8.4 8 8 # 8.5 8 9 # 8.6 9 9 # 8.7 9 9 # 8.8 9 9 # 8.9 9 9 # 9.0 9 9 # 9.1 9 9 # 9.2 9 9 # 9.3 9 9 # 9.4 9 9 # 9.5 10 10 # 9.6 10 10 # 9.7 10 10 # 9.8 10 10 # 9.9 10 10 print(sum1, sum2, sum3) # 出力:495.0 495 500 divmod【商・剰余】メモ商・剰余を一度に取得 整数の個別取得:// 演算子・% 演算子 外部リンク Python 標準ライブラリ組み込み関数divmod(a, b) 構文 divmod(a, b) 戻り値商と剰余の tuple【タプル型】 a被除数 (整数・浮動小数点数) b除数 (整数・浮動小数点数) 例 a = 7 b = 3 print(divmod(a, b)) # 出力:(2, 1) div, mod = divmod(a, b) print(div, mod) # 出力:2 1 print((a // b), (a % b)) # 出力:2 1 print(divmod(7.7, 3.3)) # 出力:(2.0, 1.1000000000000005) pow【べき乗・剰余 (baseexp % mod)】3.8メモべき乗 (baseexp ) または べき乗の剰余 (baseexp % mod ) を取得 べき乗は ** 演算子と等価 べき乗の剰余は、他の計算方法より最適化 外部リンク Python 標準ライブラリ組み込み関数pow(base, exp[, mod]) 構文 pow(base, exp[, mod]) 戻り値べき乗 (baseexp) または べき乗の剰余 (baseexp % mod) base底 (数値型) mod指定の場合は整数 expべき指数 (数値型) mod指定の場合は整数 3.8 mod指定の場合は非負整数 3.0 mod除数 (数値型) expが負の場合も指定可 3.8 expが負の場合は指定不可 3.0 例 x = 2 y = 3 z = 4 print(pow(x, y)) # 出力:8 print(pow(x, y, z)) # 出力:0 print(pow(5, -1)) # 出力:0.2 print(pow(5, 0)) # 出力:1 print(pow(1.5, 0.5)) # 出力:1.224744871391589 # Python 3.8 print(pow(38, -1, 137)) # 出力:119 sum【合計】3.83.12メモ合計を取得 通常は数値要素 (数値以外は非推奨) 精度が良い浮動小数点数値要素の合計は、math.fsum(iterable) 浮動小数点数値要素の合計は、ほぼ高い精度のアルゴリズムに切り替え 3.12 外部リンク Python 標準ライブラリ組み込み関数sum(iterable, /, start=0) 構文 sum(iterable[, start] ) 3.0 sum(iterable, /, start=0) 3.8 戻り値合計値等 iterable対象イテラブル オブジェクト (通常は数値要素) start (位置引数)初期値 (デフォルト:0) 3.0 start (位置引数・キーワード引数)初期値 (デフォルト:0) 3.8 ※ 上側の構文の / より前は、位置引数としてのみ有効 (def【関数定義】 参照) 例 data1 = [1, 2, 3] print(sum(data1)) # 出力:6 print(sum(data1, 10)) # 出力:16 # Python 3.8 print(sum(data1, start=10)) # 出力:16 data2 = [1.1, 2.2, 3.3] print(sum(data2)) # 出力:6.6 # 非推奨 data3 = [[1, 2], [3, 4]] print(sum(data3, [])) # 出力:[1, 2, 3, 4]