Самый эффективный способ 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 ответов:
С документация Python, вы можете использовать
max:>>> mylist = ['123','123456','1234'] >>> print max(mylist, key=len) 123456
что должно произойти, если есть более чем 1 длинная строка (думаю, '12', и '01')?
попробуйте, чтобы получить самый длинный элемент
max_length,longest_element = max([(len(x),x) for x in ('a','b','aa')]), а затем регулярно по каждому элементу
for st in mylist: if len(st)==max_length:...
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)
чтобы получить самый маленький или самый большой элемент в списке, используйте встроенный min и максимальные функции:
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, Если вы правильно сопоставите ее для строк и используете ее в качестве сравнения. Я бы рекомендовал просто найти максимум один раз, хотя, конечно, не для каждого элемент в списке.
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
Comments