J'ai une liste de longueur variable et j'essaie de trouver un moyen de vérifier si l'élément de la liste en cours d'évaluation est la plus longue chaîne contenue dans la liste. Et j'utilise Python 2.6.1
Par exemple:
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()
Je suis tout nouveau sur python et je suis sûr que je ne fais que péter une cervelle. Sûrement, il y a une compréhension de liste simple, courte et élégante que je néglige?
Merci!
À partir de la documentation Python elle-même, vous pouvez utiliser max
:
>>> mylist = ['123','123456','1234']
>>> print max(mylist, key=len)
123456
Que devrait-il se passer s'il y a plus d'une chaîne la plus longue (pensez '12' et '01')?
Essayez cela pour obtenir le plus long élément
max_length,longest_element = max([(len(x),x) for x in ('a','b','aa')])
Et puis régulièrement 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)
ou beaucoup plus facile:
max(some_list , key = len)
Pour obtenir le plus petit ou le plus gros élément d'une liste, utilisez les fonctions intégrées min et max:
lo = min(L) hi = max(L) As with sort (see below), you can pass in a key function
qui est utilisé pour mapper les éléments de la liste avant qu'ils ne soient comparés:
lo = min(L, key=int) hi = max(L, key=int)
http://effbot.org/zone/python-list.htm
Il semblerait que vous puissiez utiliser la fonction max si vous la mappez correctement pour les chaînes et utilisez-la comme comparaison. Je recommanderais simplement de trouver le maximum une fois, bien sûr, pas pour chaque élément de la liste.
len(each) == max(len(x) for x in myList)
ou juste 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