Maison >développement back-end >Tutoriel Python >Pourquoi l'appel de « .index » sur une liste après avoir utilisé la méthode « .reverse() » entraîne-t-il une « AttributeError » ?

Pourquoi l'appel de « .index » sur une liste après avoir utilisé la méthode « .reverse() » entraîne-t-il une « AttributeError » ?

DDD
DDDoriginal
2024-11-19 09:43:03246parcourir

Why does calling `.index` on a list after using `.reverse()` method result in an `AttributeError`?

Inverser une liste avec des méthodes chaînables

Dans l'extrait de code que vous avez fourni, vous essayez d'inverser une liste à l'aide de la méthode .reverse(), puis de la chaîner immédiatement une autre méthode (.index) sur la liste inversée. Cependant, .reverse() modifie la liste sur place et renvoie None, c'est pourquoi vous recevez l'erreur AttributeError : l'objet 'NoneType' n'a pas d'attribut 'index'.

Pour éviter ce problème, vous pouvez utiliser slicer pour renvoyer une copie inversée de la liste. Le découpage avec [::-1] inverse l'ordre des éléments dans la liste et crée une nouvelle liste sans modifier celle d'origine :

formation[::-1]

Cette expression renvoie une copie inversée de la liste de formation, que vous peut ensuite utiliser pour appeler .index sur :

def solution(formation):
    return (formation.index(bCamel) > (len(formation) - 1 - (formation[::-1]).index(fCamel)))

Avec cette modification, la fonction solution déterminera avec succès si l'indice de 'B' (bCamel) dans la liste de formation est supérieur que l'indice de 'F' (fCamel) dans la liste de formations inversée, moins la longueur de la liste de formations. Il s'agit essentiellement d'une vérification pour voir si « B » vient avant « F » dans la formation inversée.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn