En mi programa, el usuario ingresa el número n
y luego ingresa el n
número de cadenas, que se almacenan en una lista.
Necesito codificar de modo que si existe un cierto índice de lista, ejecute una función.
Esto se hace más complicado por el hecho de que he anidado las declaraciones if sobre len(my_list)
.
Aquí hay una versión simplificada de lo que tengo ahora, que no funciona:
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
usuario1569317
fuente
fuente
n
como un entero, no como una lista. Estoy confundido.n
lugar denams
en elif
slen
de la lista tiene al menos un cierto valor?Respuestas:
¿Podría ser más útil para usted usar la longitud de la lista
len(n)
para informar su decisión en lugar de verificarn[i]
cada longitud posible?fuente
Necesito codificar de modo que si existe un cierto índice de lista, ejecute una función.
Este es el uso perfecto para un bloque de prueba :
Sin embargo, por definición, todos los elementos en una lista de Python existen
0
ylen(the_list)-1
existen (es decir, no hay necesidad de intentarlo, excepto si lo sabe0 <= index < len(the_list)
).Puede usar enumerate si desea los índices entre 0 y el último elemento:
Si está buscando un pensamiento definido de 'índice', creo que está haciendo la pregunta incorrecta. Quizás debería considerar usar un contenedor de mapeo (como un dict) versus un contenedor de secuencia (como una lista). Podrías reescribir tu código así:
Corre así:
También puede usar el método .get en lugar de probar / excepto para una versión más corta:
fuente
try
no te dice si el índice existe solo si es recuperable, toma-1
, ese índice realmente no existe pero se devolvería un valor.len(nams)
debe ser igual an
en su código. Todos los índices0 <= i < n
"existen".fuente
Se puede hacer simplemente usando el siguiente código:
fuente
Ya sabe cómo probar esto y, de hecho , ya está realizando tales pruebas en su código .
Los índices válidos para una lista de longitud
n
son0
a travésn-1
inclusiva.Por lo tanto, una lista tiene un índice
i
si y solo si la longitud de la lista es al menosi + 1
.fuente
Usar la longitud de la lista sería la solución más rápida para verificar si existe un índice:
Esto también prueba los índices negativos y la mayoría de los tipos de secuencia (Me gusta
ranges
ystr
s) que tienen una longitud.Si necesita acceder al elemento en ese índice después de todos modos, es más fácil pedir perdón que permiso , y también es más rápido y más pitónico. Uso
try: except:
.Esto sería opuesto a:
fuente
Si desea iterar los datos de actores insertados:
fuente
ok, entonces creo que es realmente posible (en aras de la discusión):
fuente
3 in range(len(your_list)
3 in xrange(len(your_list)
- probablemente no puede ser mejor que estoPuedes probar algo como esto
fuente
Un trazador de líneas:
Ejemplo completo:
Sólo por información. En mi humilde opinión,
try ... except IndexError
es la mejor solución.fuente
No deje espacio delante de sus soportes.
Ejemplo:
Consejo: debe agregar comentarios encima y / o debajo de su código. No detrás de tu código.
Que tengas un buen día.
fuente
Muchas respuestas, no la simple.
Para verificar si existe un índice 'id' en el diccionario dict:
devuelve verdadero si existe 'edad'.
fuente