def main():
a = [2,1,5,234,3,44,7,6,4,5,9,11,12,14,13]
max = 0
for number in a:
if number > max:
max = number
print max
if __== '__main__':
main()
Je peux obtenir la valeur maximale dans le tableau ( sans utiliser max () bien sur ...). Comment puis-je obtenir l'index (position) de cette valeur? Essayez de garder les choses simples sans utiliser de nouveaux mots clés ou fonctions intégrées en Python. Merci!
Si vous n'êtes pas autorisé à utiliser la fonction index () intégrée, il vous suffit de faire une itération avec un index, au lieu d'utiliser une boucle foreach.
for i in range(len(a)):
if a[i] > max:
max = a[i]
maxIndex = i
Dans mon code, je voudrais utiliser ceci:
>>> max(enumerate(a),key=lambda x: x[1])[0]
3
Un simple liner de:
max( (v, i) for i, v in enumerate(a) )[1]
Cela évite d'avoir à .index()
la liste après.
Mettre à jour:
max_idx = -1
max_val = a[0]
for i in xrange(1, len(a)):
if a[i] > max_val:
max_val = a[i]
max_idx = i
Ceci n’observe pas la fonction intégrée max()
et donne également des réponses correctes aux listes contenant uniquement des valeurs négatives.
Solution précédente
a.index(max(a))
fera l'affaire.
La fonction intégrée max(a)
trouvera la valeur maximale dans votre liste a
et la fonction de liste index(v)
trouvera l'index de la valeur v
dans votre liste. En les combinant, vous obtenez ce que vous recherchez, dans ce cas la valeur d'index 3
.
Notez que .index()
trouvera l'index de l'élément first correspondant dans la liste. Par conséquent, si vous aviez plusieurs valeurs "max" identiques, l'index renvoyé serait celui du premier.
Pour plus d'informations:
Dans l'esprit de "Simple, c'est mieux que complexe." (Zen de Python)
Utilisez la méthode argmax de l'objet numpy.array.
import numpy as np
np.array(a).argmax()
Vous pouvez utiliser enumerate
pour vous donner également un index lors d'une itération dans une liste:
>>> a = [2, 1, 5, 234, 3, 44, 7, 6, 4, 5, 9, 11, 12, 14, 13]
>>> maxIndex, maxNumber = 0, 0
>>> for index, number in enumerate(a):
if number > maxNumber:
maxIndex = index
maxNumber = number
>>> maxIndex, maxNumber
(3, 234)
c'est beaucoup plus simple
x.index(max(x)) #where x is your list
Utilisez la fonction index (x). Voir la documentation ici http://docs.python.org/tutorial/datastructures.html
def main():
a = [2,1,5,234,3,44,7,6,4,5,9,11,12,14,13]
max = 0
for number in a:
if number > max:
max = number
max_index = a.index(max)
print max
Toutefois, cela n’est pas aussi rapide que d’autres réponses suggérées (par exemple, enumerate). Simple cependant.