287

可変長のリストがあり、現在評価されているリスト項目がリストに含まれている最長の文字列であるかどうかをテストする方法を見つけようとしています。そして私はPython2.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()

確かに、私が見落としている短くてエレガントな単純なリスト内包表記はありますか?

4

6 に答える 6

707

Pythonのドキュメント自体から、次を使用できますmax

>>> mylist = ['123','123456','1234']
>>> print max(mylist, key=len)
123456
于 2009-05-16T21:19:46.140 に答える
9
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)
于 2016-12-14T23:26:45.433 に答える
8

最長の文字列が複数ある場合(「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:...
于 2009-05-16T21:22:37.817 に答える
4

len(each) == max(len(x) for x in myList)あるいは単にeach == max(myList, key=len)

于 2009-05-16T21:20:36.993 に答える
4

リスト内の最小または最大のアイテムを取得するには、組み込みの最小関数と最大関数を使用します。

 lo = min(L)
 hi = max(L)  

sortと同様に、リストアイテムを比較する前にマップするために使用される「key」引数を渡すことができます。

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

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

max関数を文字列に正しくマップし、それを比較として使用すれば、max関数を使用できるようです。もちろん、リスト内の各要素ではなく、一度だけ最大値を見つけることをお勧めします。

于 2009-05-16T21:20:49.180 に答える
0
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
于 2011-10-21T23:21:47.587 に答える