strでmaxをかけると直感と異なる動作になる[Python]
# 正規表現で文字列から数字を抽出していたときのこと l = re.findall(r"([1-9]\d*)", "for 5-10 h") # 抽出されたリストにはstrで数字が入っている l >> ['5', '10'] # maxで大きい方をとりたい max(l) >> '5' # なぜ5が選ばれるのか? # 困ったのでとりあえずintにキャスト l2 = [int(s) for s in l] >> [5, 10] # こうすると直感通り10が選ばれる max(l2) >> 10
# 別のパターンで検証 l=re.findall(r"([1-9]\d*)", "400, 500, 600 and 800 degC") max(l) >> '800' # こちらの場合だとうまくいく。繰り上がりが原因か?
ディスカッション
コメント一覧
まだ、コメントがありません