Tôi cần mã để nếu một chỉ mục danh sách nhất định tồn tại, sau đó chạy một hàm.
Đây là cách sử dụng hoàn hảo cho một khối thử :
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...
Tuy nhiên, theo định nghĩa, tất cả các mục trong danh sách Python nằm giữa 0
và len(the_list)-1
tồn tại (nghĩa là không cần thử, ngoại trừ nếu bạn biết 0 <= index < len(the_list)
).
Bạn có thể dùng phép liệt kê nếu bạn muốn các chỉ mục từ 0 đến phần tử cuối cùng:
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...
Nếu bạn đang tìm kiếm một số suy nghĩ 'chỉ số' được xác định, tôi nghĩ rằng bạn đang hỏi sai câu hỏi. Có lẽ bạn nên cân nhắc sử dụng bộ chứa ánh xạ (chẳng hạn như dict) so với bộ chứa thứ tự (chẳng hạn như danh sách). Bạn có thể viết lại mã của bạn như thế này:
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)
Chạy như thế này:
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
Bạn cũng có thể sử dụng phương thức .get thay vì thử / ngoại trừ phiên bản ngắn hơn:
>>> something_to_do.get(3, default)('bob')
some thing 1 done with bob
>>> something_to_do.get(22, default)('alice')
nothing done with alice
n
dưới dạng một số nguyên, không phải là một danh sách. Tôi bối rối.