Devo codificare in modo tale che se esiste un certo indice di elenco, quindi eseguire una funzione.
Questo è l'uso perfetto per un blocco try :
ar=[1,2,3]
try:
t=ar[5]
except IndexError:
print('sorry, no 5')
# Note: this only is a valid test in this context
# with absolute (ie, positive) index
# a relative index is only showing you that a value can be returned
# from that relative index from the end of the list...
Tuttavia, per definizione, tutti gli elementi in un elenco Python tra 0ed len(the_list)-1esistono (cioè, non è necessario provare, tranne se lo sai 0 <= index < len(the_list)).
È possibile utilizzare enumerare se si desidera che gli indici siano compresi tra 0 e l'ultimo elemento:
names=['barney','fred','dino']
for i, name in enumerate(names):
print(i + ' ' + name)
if i in (3,4):
# do your thing with the index 'i' or value 'name' for each item...
Se stai cercando un pensiero "indice" definito, penso che stai facendo la domanda sbagliata. Forse dovresti prendere in considerazione l'uso di un contenitore di mappatura (come un dict) rispetto a un contenitore di sequenze (come un elenco). È possibile riscrivere il codice in questo modo:
def do_something(name):
print('some thing 1 done with ' + name)
def do_something_else(name):
print('something 2 done with ' + name)
def default(name):
print('nothing done with ' + name)
something_to_do={
3: do_something,
4: do_something_else
}
n = input ("Define number of actors: ")
count = 0
names = []
for count in range(n):
print("Define name for actor {}:".format(count+1))
name = raw_input ()
names.append(name)
for name in names:
try:
something_to_do[len(name)](name)
except KeyError:
default(name)
Funziona così:
Define number of actors: 3
Define name for actor 1: bob
Define name for actor 2: tony
Define name for actor 3: alice
some thing 1 done with bob
something 2 done with tony
nothing done with alice
Puoi anche usare il metodo .get piuttosto che provare / ad eccezione di una versione più breve:
>>> something_to_do.get(3, default)('bob')
some thing 1 done with bob
>>> something_to_do.get(22, default)('alice')
nothing done with alice
ncome numero intero, non come un elenco. Non ho capito bene.