2009-05-16 26 views
149

私は可変長のリストを持っており、現在評価されているリスト項目がリストに含まれている最長の文字列であるかどうかをテストする方法を見つけようとしています。そして、私は例えばPythonの2.6.1リスト内で最も長い文字列を選択するPythonの最も効率的な方法は?

を使用しています:

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 documentation自体から

答えて

392

、あなたはmaxを使用することができます。

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

yをありがとう大変です – user104997

+60

絶対に美しい。 –

+0

本当にいいです。 –

1

len(each) == max(len(x) for x in myList)か、単にeach == max(myList, key=len)

+1

あなたは簡単な説明を提供できますか? –

1

をリストで最小または最大の項目を取得するには、内蔵の分と を使用します最大機能:

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

あなたは、文字列のためにそれを正しくマッピングし、比較としてことを使用する場合は、MAX関数を使用することができますように

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

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

はルックス:それらが比較される前に、リスト項目 をマップするために使用されます。もちろん、リストの各要素ではなく、maxを1回だけ見つけることをお勧めします。

4

最長の文字列が1つ以上ある場合(「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:... 
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 
1
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) 
関連する問題