Самый эффективный способ Python выбрать самую длинную строку в списке?

У меня есть список переменной длины, и пытаюсь найти способ протестировать, если элемент списка, в настоящее время будучи оцененным является самой длинной строкой, содержавшейся в списке. И я использую Python 2.6.1

Например:

mylist = ['abc','abcdef','abcd']

for each in mylist:
    if condition1:
        do_something()
    elif ___________________: #else if each is the longest string contained in mylist:
        do_something_else()

Конечно, существует простое понимание списка, это коротко и изящно, который я пропускаю?

219
задан Neuron 16 November 2019 в 01:22
поделиться

4 ответа

Из самой документации Python вы можете использовать max :

>>> mylist = ['123','123456','1234']
>>> print max(mylist, key=len)
123456
558
ответ дан 23 November 2019 в 04:08
поделиться

Что должно произойти, если существует более одной самой длинной строки (например, «12» и «01»)?

Попробуйте это, чтобы получить самый длинный элемент

max_length,longest_element = max([(len(x),x) for x in ('a','b','aa')])

А затем обычный foreach

for st in mylist:
    if len(st)==max_length:...
5
ответ дан 23 November 2019 в 04:08
поделиться

Чтобы получить самый маленький или самый большой элемент в списке, используйте встроенные min и макс. функции:

 lo = min (L)
hi = max (L) Как и в случае с sort (см. ниже), вы можете передать ключевую функцию

, который используется для сопоставления элементов списка перед их сравнением:

 lo = min (L, key = int)
привет = макс (L, ключ = int)

http://effbot.org/zone/python-list.htm

Похоже, вы могли бы использовать функцию max, если вы правильно сопоставили ее со строками и использовали ее для сравнения. Я бы порекомендовал просто найти максимум один раз, хотя, конечно, не для каждого элемента в списке.

3
ответ дан 23 November 2019 в 04:08
поделиться

len (each) == max (len (x) for x in myList) или просто each == max (myList, key = len)

1
ответ дан 23 November 2019 в 04:08
поделиться
Другие вопросы по тегам:

Похожие вопросы: