この記事では、Pythonでリストに格納されている文字列の中で文字数が最大・最小の要素を取得する方法を解説します。
リストを要素の長さで並び替えることで文字数が最大、または最小の要素が両端に配置されます。あとはlist[0]
で最初、list[-1]
で最後の要素を取得します。
li = ['abc', 'abcd', 'a', 'abcde']
# 要素の長さでソート
sorted_li = sorted(li ,key=lambda s:len(s))
print(f'最短: {sorted_li[0]}、最長: {sorted_li[-1]}')
# 最短: a、最長: abcde
Linksorted - 組み込み関数 — Python 3.11.5 ドキュメント
min()
とmax()
のkey
引数にlen()
を指定することで要素の長さで大きさを判定してくれるようになります。
li = ['abc', 'abcd', 'a', 'abcde']
print(min(li, key=len)) # a
print(max(li, key=len)) # abcde
Linkmax -- 組み込み関数 — Python 3.11.5 ドキュメント
同じ長さの要素が複数格納されている場合、並び替えを使った方法では初期の要素の位置が重要になってくる。移動する方向に近い要素ほど端に配置される。
li = ['zzzzz', 'abc', 'abcd', 'a', 'abcde', 'z']
sorted_li = sorted(li ,key=lambda s:len(s))
print(sorted_li)
# ['a', 'z', 'abc', 'abcd', 'zzzzz', 'abcde']
min()
、max()
では単純に先に見つけた要素が優先される。
li = ['zzzzz', 'abc', 'abcd', 'a', 'abcde', 'z']
print(min(li, key=len)) # a
print(max(li, key=len)) # zzzzz