max【最大値】・min【最小値】3.4 / 3.8
abs【絶対値】
round【丸め】3.0
divmod【商・剰余】
pow【べき乗・剰余 (baseexp % mod)】3.8
sum【合計】3.83.12

max【最大値】3.4 / 3.8
min【最小値】3.4 / 3.8

メモ

概要

  • 最大値最小値を取得
  • 順序関数の指定可〔
  • 複数の同じ値がある場合、先に現れた要素

list【リスト型】tuple【タプル型】の最大値・最小値

  • そのまま指定

dict【辞書型】の最大値・最小値

外部リンク

構文

max(iterable, *[, key, default3.4])
max(arg1, arg2, *args[, key])

min(iterable, *[, key, default3.4])
min(arg1, arg2, *args[, key])

戻り値最大値 または 最小値
iterable対象イテラブル オブジェクト
arg1arg2対象要素
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【絶対値】

メモ

構文

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

メモ

構文

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【商・剰余】

メモ

構文

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

メモ

構文

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

メモ

構文

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]