J'ai une liste de longueur variable et j'essaie de trouver un moyen de tester si l'élément de 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 = ['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()
Il y a sûrement une compréhension de liste simple, courte et élégante que je néglige?
python
list
list-comprehension
user104997
la source
la source
print(max(["this", "does", "work"], key=len))
renvoie uniquement"this"
au lieu de renvoyer toutes les chaînes les plus longues.m=max(map(len,xs)); [x for x in xs if len(x) == m]
. Je ne pense pas que cela puisse être bien fait en une seule ligne.Que doit-il se passer s'il y a plus d'une chaîne plus longue (pensez à «12» et «01»)?
Essayez cela pour obtenir l'élément le plus long
Et puis foreach régulière
la source
ou bien plus simple:
la source
http://effbot.org/zone/python-list.htm
Il semble que vous puissiez utiliser la fonction max si vous la mappez correctement pour les chaînes et que vous l'utilisez comme comparaison. Je recommanderais simplement de trouver le max une fois bien sûr, pas pour chaque élément de la liste.
la source
len(each) == max(len(x) for x in myList)
ou justeeach == max(myList, key=len)
la source
la source