317 votes

Python est le moyen le plus efficace de choisir la chaîne la plus longue dans la liste?

J'ai une liste de longueur variable et essaie de trouver (le plus probable) une compréhension de liste pour me permettre de voir si l'élément de la liste actuellement en cours d'évaluation est la plus longue chaîne contenue dans la liste. Et je suis en utilisant Pythong 2.6.1

c'est à dire.

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 à python et je suis sûr que je suis d'avoir un pet cerveau. Il y a certainement une simple liste de la compréhension qui, à court et élégante que je suis dominant?

Merci!

766voto

Paolo Bergantino Points 199336

À partir de la documentation Python lui-même, vous pouvez utiliser max:

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

8voto

Elazar Leibovich Points 9396

Qu'arriverait-il si il y a plus de 1 chaîne la plus longue (pensez à '12', et '01')?

Essayer d'obtenir la plus longue de l'élément

max_length,longest_element = max([(len(x),x) for x in ('a','b','aa')])

Puis régulièrement foreach

for st in mylist:
    if len(st)==max_length:...

3voto

HarryM Points 1382

len(each) == max(len(x) for x in myList) ou juste each == max(myList, key=len)

3voto

Gavin H Points 6366

Pour obtenir le plus petit ou le plus grand élément dans une liste, utilisez la fonction intégrée dans min et fonctions 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 ils sont comparés:

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

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

Semble que vous pouvez utiliser la fonction max si vous avez la carte correctement pour cordes et de l'utiliser comme comparaison. Je recommande juste de trouver le max une fois même si bien sûr, pas pour chaque élément de la liste.

0voto

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X