Ответ 1
Из самой документации по Python вы можете использовать max
:
>>> mylist = ['123','123456','1234']
>>> print max(mylist, key=len)
123456
У меня есть список переменной длины, и я пытаюсь найти способ проверить, является ли элемент списка, который в настоящее время оценивается, самой длинной строкой, содержащейся в списке. И я использую 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, и я уверен, что у меня просто мозговой пердит. Наверняка, есть простой список понимания, что короткие и элегантные, что я пропускаю?
Спасибо!
Из самой документации по 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