data = ['str', 'frt']
max(data, key=len)
max 関数は文字列を 1 つだけ返します。
両方の文字列を返すようにするにはどうすればよいですか?
両方の文字列の長さは等しいので、max
両方の文字列を返す必要がありますが、1 つしか返さないため、最大項目をすべて返す方法はありますか?
これをリスト内包表記として書くことができます:
data = ['str', 'frt']
maxlen = max(map(len, data))
result = [s for s in data if len(s) == maxlen]
定義により、max 関数は最大値を返します。アイテムを返すのではなく、一意の値だけを返します (最大値が同じアイテムが複数ある場合でも)。ソートアルゴリズムを使用して、必要な値を取得することをお勧めします。
あなたの例では:
data = ['str','frt']
sorted(data,key=len, reverse=True)
result = [s for s in data if len(s)==len(data[0])]