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

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

Например:

mylist = ['123','123456','1234'] for each in mylist: if condition1: do_something() elif ___________________: #else if each is the longest string contained in mylist: do_something_else() 

Я новичок в python, и я уверен, что у меня просто мозговой пердит. Несомненно, есть простое понимание списка, которое является коротким и изящным, что я пропускаю?

Благодаря!

6 Solutions collect form web for “Самый эффективный способ Python выбрать самую длинную строку в списке?”

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

 >>> mylist = ['123','123456','1234'] >>> print max(mylist, key=len) 123456 

Что должно произойти, если есть более одной длинной строки (подумайте «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:... 

len(each) == max(len(x) for x in myList) или только each == max(myList, key=len)

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

 lo = min(L) hi = max(L) As with sort (see below), you can pass in a key function 

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

 lo = min(L, key=int) hi = max(L, key=int) 

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

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

 def longestWord(some_list): count = 0 #You set the count to 0 for i in some_list: # Go through the whole list if len(i) > count: #Checking for the longest word(string) count = len(i) word = i return ("the longest string is " + word) 

или намного проще:

 max(some_list , key = len) 
 def LongestEntry(lstName): totalEntries = len(lstName) currentEntry = 0 longestLength = 0 while currentEntry < totalEntries: thisEntry = len(str(lstName[currentEntry])) if int(thisEntry) > int(longestLength): longestLength = thisEntry longestEntry = currentEntry currentEntry += 1 return longestLength 
  • Python - понимание слов для слов, которые состоят не только из цифр
  • как получить кортежи из списков, используя понимание списка в python
  • Как математически вычитать элементы в двух списках на Python и выводить только те элементы, которые соответствуют условию?
  • Конденсация нескольких списков
  • Pythonic способ распечатать элементы списка
  • список вызовов функции, использующей понимание списка
  • Учет списка, проверьте, уникален ли элемент
  • если еще в понимании списка
  • Python - лучший язык программирования в мире.