Ich muss so codieren, dass, wenn ein bestimmter Listenindex vorhanden ist, eine Funktion ausgeführt wird.
Dies ist die perfekte Verwendung für einen Try-Block :
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...
Per Definition sind jedoch alle Elemente in einer Python-Liste zwischen 0und len(the_list)-1vorhanden (dh es ist kein Versuch erforderlich, es sei denn, Sie wissen es 0 <= index < len(the_list)).
Sie können enumerate verwenden, wenn die Indizes zwischen 0 und dem letzten Element liegen sollen:
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...
Wenn Sie nach einem definierten 'Index'-Gedanken suchen, stellen Sie wahrscheinlich die falsche Frage. Vielleicht sollten Sie einen Zuordnungscontainer (z. B. ein Diktat) gegenüber einem Sequenzcontainer (z. B. eine Liste) verwenden. Sie können Ihren Code folgendermaßen umschreiben:
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)
Läuft wie folgt:
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
Sie können auch die .get- Methode verwenden, anstatt / zu versuchen, mit Ausnahme einer kürzeren Version:
>>> something_to_do.get(3, default)('bob')
some thing 1 done with bob
>>> something_to_do.get(22, default)('alice')
nothing done with alice
nals ob Sie cast als Ganzzahl und nicht als Liste eingeben möchten . Ich bin verwirrt.