Python vérifier le premier et le dernier index d'une liste
En supposant que j'ai object_list liste qui contient les objets.
Je veux vérifier si mon itération courante est est à la première ou à la dernière.
for object in object_list:
do_something
if first_indexed_element:
do_something_else
if last_indexed_element:
do_another_thing
Comment cela peut-il être atteint? Je sais que je peux utiliser la gamme et le comte d'index, mais s'il se sent maladroit.
Ce qui concerne
OriginalL'auteur Hellnar | 2010-08-03
Vous devez vous connecter pour publier un commentaire.
Assez compliqué. Pas exactement ce que l'auteur veut (
do_first_thing_with
doit être appelée après la premièredo_something_with
).probablement la solution la plus efficace (+1), mais malheureusement pas très concis, facile à analyser.
OriginalL'auteur
Vous pouvez utiliser
enumerate()
:Mais au lieu de vérifier à chaque itération de l'objet en question, peut-être quelque chose comme ce qui est mieux:
Imaginez que vous avez une liste de 100 objets, puis de vous rendre 198 inutile comparaisons, parce que l'élément en cours ne peut pas être le premier ou le dernier élément de la liste.
Mais cela dépend si les déclarations doivent être exécutées dans un certain ordre et ce qu'ils font.
Btw. ne pas l'ombre
object
, c'est déjà un identifiant en Python 😉i
ne pourra jamais égalerlen(object_list)
.Vrai, merci
OriginalL'auteur
Pas quand elle rend le code beaucoup plus complexe à lire, et vous savez que vous allez travailler avec des listes.
OriginalL'auteur
OriginalL'auteur
Vous avez juste à utiliser un compteur, pas besoin de la gamme :
Disons que votre compteur est
cpt
.modifier : le énumérer solution peut-être plus élégant.
OriginalL'auteur
Donc je préfère le 1 ou 3.
PS: la liste.size() len(liste) de cours.
O(1)
.Ne sais pas ce qui est O(1), mais la comparaison d'objets personnalisés, à mon humble avis, est toujours plus lent que la comparaison de nombres (même si elles sont aussi des objets). En outre, dans ce cas, vous devez fournir l'égalité règles, ce qui peut être assez compliqué. En outre, la liste peut contenir des doublons, donc il peut provoquer des erreurs (c'est différent point de vue, néanmoins, vous devez le prendre en compte).
En outre! : lorsque vous essayez d'obtenir de l'élément de la liste, python première liste, puis de trouver l'élément à l'index. si vous utilisez un nombre, il faut seulement trouver numéro 1 de l'opération moins. à mon humble avis - je ne t sais python internes.
Vous avez raison, objets de comparaison être cher s'ils mettent en œuvre une fonction de comparaison personnalisée. Mais l'accès à un élément d'une liste est rapide.
OriginalL'auteur