Dans mon programme, l'utilisateur entre le nombre n
, puis entre le n
nombre de chaînes, qui sont stockées dans une liste.
J'ai besoin de coder de telle sorte que si un certain index de liste existe, exécutez une fonction.
Ceci est rendu plus compliqué par le fait que j'ai imbriqué des déclarations if about len(my_list)
.
Voici une version simplifiée de ce que j'ai maintenant, qui ne fonctionne pas:
n = input ("Define number of actors: ")
count = 0
nams = []
while count < n:
count = count + 1
print "Define name for actor ", count, ":"
name = raw_input ()
nams.append(name)
if nams[2]: #I am trying to say 'if nams[2] exists, do something depending on len(nams)
if len(nams) > 3:
do_something
if len(nams) > 4
do_something_else
if nams[3]: #etc.
python
python-2.7
utilisateur1569317
la source
la source
n
sous forme d'entier et non de liste. Je suis confus.n
au lieu denams
dans leif
slen
de la liste est au moins une certaine valeur?Réponses:
Serait-il plus utile pour vous d'utiliser la longueur de la liste
len(n)
pour éclairer votre décision plutôt que de vérifiern[i]
chaque longueur possible?la source
J'ai besoin de coder de telle sorte que si un certain index de liste existe, exécutez une fonction.
C'est l'utilisation parfaite pour un bloc try :
Cependant, par définition, tous les éléments d'une liste Python entre
0
etlen(the_list)-1
existent (c'est-à-dire qu'il n'est pas nécessaire d'essayer, sauf si vous savez0 <= index < len(the_list)
).Vous pouvez utiliser enumerate si vous voulez les index entre 0 et le dernier élément:
Si vous cherchez une pensée «index» définie, je pense que vous posez la mauvaise question. Vous devriez peut-être envisager d'utiliser un conteneur de mappage (tel qu'un dict) par rapport à un conteneur de séquence (tel qu'une liste). Vous pouvez réécrire votre code comme ceci:
Fonctionne comme ceci:
Vous pouvez également utiliser la méthode .get plutôt que try / sauf pour une version plus courte:
la source
try
ne pas vous dire si l'indice existe juste si elle est fetchable - prendre-1
- cet indice n'a pas vraiment existe , mais une valeur serait renvoyée.len(nams)
doit être égal àn
dans votre code. Tous les index0 <= i < n
"existent".la source
Cela peut être fait simplement en utilisant le code suivant:
la source
Vous savez déjà comment tester cela et en fait, vous effectuez déjà de tels tests dans votre code .
Les indices valides pour une liste de longueur
n
sont0
parn-1
inclus.Ainsi, une liste a un index
i
si et seulement si la longueur de la liste est au moinsi + 1
.la source
Utiliser la longueur de la liste serait la solution la plus rapide pour vérifier si un index existe:
Cela teste également les indices négatifs et la plupart des types de séquence (Like
ranges
etstr
s) qui ont une longueur.Si vous avez de toute façon besoin d'accéder à l'élément à cet index par la suite, il est plus facile de demander pardon que la permission , et c'est aussi plus rapide et plus pythonique. Utilisez
try: except:
.Ce serait par opposition à:
la source
Si vous souhaitez itérer les données d'acteurs insérées:
la source
ok, donc je pense que c'est réellement possible (pour des raisons d'argumentation):
la source
3 in range(len(your_list)
3 in xrange(len(your_list)
- ne peut probablement pas faire mieux que celaVous pouvez essayer quelque chose comme ça
la source
Bon mot:
Exemple complet:
Juste pour info. Imho,
try ... except IndexError
est une meilleure solution.la source
Ne laissez aucun espace devant vos supports.
Exemple:
Astuce: vous devez ajouter des commentaires sur et / ou sous votre code. Pas derrière votre code.
Bonne journée.
la source
Beaucoup de réponses, pas la simple.
Pour vérifier si un index 'id' existe dans le dictionnaire dict:
renvoie true si «age» existe.
la source