Python: Как я могу получить все элементы в списке до самого длинного элемента?

У меня есть список, например

l = ['abc34','def987','ghij','klmno','pqrstuvwxyz1234567','98765','43','210abc'] 

Как я могу получить все элементы в списке до появления самого длинного элемента, а не того, что приходит после?

Это работает:

 lst = ['abc34','def987','ghij','klmno','pqrstuvwxyz1234567','98765','43','210abc'] idx, maxLenStr = max(enumerate(lst), key=lambda x:len(x[1])) sublist = lst[:idx] 

Он только итерации через список один раз для определения максимальной длины, тогда как использование max() а затем index() повторяется дважды по всем элементам. Он также сохраняет строку с максимальной длиной в maxLenStr и индексом, где она была найдена в idx , на всякий случай.

Это один из способов:

 l = ['abc34','def987','ghij','klmno','pqrstuvwxyz1234567','98765','43','210abc'] new_list = l[:l.index(max(l, key=len))]