我有一个可变长度的列表,我试图找到一种方法来测试当前正在评估的列表项是否是列表中包含的最长字符串。我使用的是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()

肯定有一个简单的列表理解,简短而优雅,我忽略了?


当前回答

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)

其他回答

len(each) == max(len(x) for x in myList)或者只是each == max(myList, key=len)

如果有多个最长的字符串(比如'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:...
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)

从Python文档本身,你可以使用max:

>>> mylist = ['123','123456','1234']
>>> print max(mylist, key=len)
123456
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