可変長のリストがあり、現在評価されているリスト項目がリストに含まれる最長の文字列であるかどうかをテストする方法を見つけようとしています。そして、私は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:...
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および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関数を使用できるように見えます。もちろん、リスト内の各要素ではなく、最大値を1回だけ見つけることをお勧めします。
len(each) == max(len(x) for x in myList)
または単にeach == max(myList, 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