Saya perlu kode sedemikian rupa sehingga jika ada indeks daftar tertentu, kemudian jalankan fungsi.
Ini adalah penggunaan yang sempurna untuk blok percobaan :
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...
Namun, menurut definisi, semua item dalam daftar Python ada 0dan len(the_list)-1ada (yaitu, tidak perlu dicoba, kecuali jika Anda tahu 0 <= index < len(the_list)).
Anda bisa menggunakan penghitungan jika Anda ingin indeks antara 0 dan elemen terakhir:
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...
Jika Anda mencari pemikiran 'indeks' tertentu, saya pikir Anda mengajukan pertanyaan yang salah. Mungkin Anda harus mempertimbangkan untuk menggunakan wadah pemetaan (seperti dict) versus wadah urutan (seperti daftar). Anda dapat menulis ulang kode Anda seperti ini:
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)
Berjalan seperti ini:
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
Anda juga dapat menggunakan metode .get daripada mencoba / kecuali untuk versi yang lebih pendek:
>>> something_to_do.get(3, default)('bob')
some thing 1 done with bob
>>> something_to_do.get(22, default)('alice')
nothing done with alice
nsebagai bilangan bulat, bukan daftar. Saya bingung.