Không có cách nào trực tiếp, vì không giống như KeyError
, IndexError
không cung cấp thông tin này (chưa). Bạn có thể phân lớp được xây dựng trong list
nâng IndexError
với đối số bạn muốn:
class vist(list): # Verbose list
def __getitem__(self, item):
try:
v = super().__getitem__(item) # Preserve default behavior
except IndexError as e:
raise IndexError(item, *e.args) # Construct IndexError with arguments
return v
arr = [0, 2, 3, 4, 5, 6, 6] # list
arr = vist(arr) # vist
try:
arr[10]
except IndexError as e:
print(e.args) # (10, 'list index out of range')
Trên thực tế, bạn thậm chí không cần phải chuyển đổi nó trở lại bình thường list
.
Bạn có thể kiểm tra theo cách thủ công theo chiều dài của danh sách vì chỉ số IndexError đầu tiên sẽ được gây ra tại thời điểm đó. – sagarchalise
@sagarchalise, đúng, nhưng nó [dễ dàng hơn để yêu cầu sự tha thứ hơn sự cho phép] (https://docs.python.org/2/glossary.html#term-eafp)! – jonrsharpe