Это работает:
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
, на всякий случай.