Python: Как я могу получить все элементы в списке до самого длинного элемента? - PullRequest
2 голосов
/ 05 января 2012

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

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

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

Ответы [ 2 ]

9 голосов
/ 05 января 2012

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

l = ['abc34','def987','ghij','klmno','pqrstuvwxyz1234567','98765','43','210abc']
new_list = l[:l.index(max(l, key=len))]
3 голосов
/ 05 января 2012

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

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, на всякий случай.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...