HomeLập trìnhPythonDanh sách chỉ...

Danh sách chỉ mục nằm ngoài phạm vi – Đã giải quyết thông báo lỗi Python


Trong bài viết này, bạn sẽ thấy một số lý do gây ra list index out of range Lỗi trăn.

Bên cạnh việc biết tại sao lỗi này xảy ra ngay từ đầu, bạn cũng sẽ tìm hiểu một số cách để tránh nó.

Bắt đầu nào!

Cách tạo danh sách trong Python

Để tạo một đối tượng danh sách trong Python, bạn cần:

  • Đặt tên cho danh sách,
  • Sử dụng toán tử gán, =,
  • và bao gồm 0 hoặc nhiều mục danh sách bên trong dấu ngoặc vuông,[]. Mỗi mục danh sách cần được phân tách bằng dấu phẩy.

Ví dụ: để tạo một danh sách tên, bạn sẽ làm như sau:

names = ["Kelly", "Nelly", "Jimmy", "Lenny"]

Đoạn mã trên đã tạo một danh sách có tên names có bốn giá trị: Kelly, Nelly, Jimmy, Lenny.

Cách kiểm tra độ dài của danh sách trong Python

Để kiểm tra độ dài của danh sách trong Python, hãy sử dụng tích hợp sẵn của Python len() phương pháp.

len() sẽ trả về một số nguyên, đó sẽ là số mục được lưu trữ trong danh sách.

names = ["Kelly", "Nelly", "Jimmy", "Lenny"]

#create a variable called name_length to store the length of the list
name_length = len(names)

#print value of variable to the console
print(name_length)

#output
#4

Có bốn mục được lưu trữ trong danh sách, do đó độ dài của danh sách sẽ là bốn.

Cách truy cập các mục danh sách riêng lẻ trong Python

Mỗi mục trong một danh sách có riêng của mình số chỉ mục.

Việc lập chỉ mục trong Python và hầu hết các ngôn ngữ lập trình hiện đại đều bắt đầu từ 0.

Điều này có nghĩa là mục đầu tiên trong danh sách có chỉ số là 0, mục thứ hai có chỉ số là 1, v.v.

Đọc thêm  Cách nhúng trực quan hóa Python tương tác trên trang web của bạn bằng Python và Matplotlib

Bạn có thể sử dụng số chỉ mục để truy cập từng mục.

Để truy cập một mục trong danh sách bằng số chỉ mục của nó, trước tiên hãy viết tên của danh sách. Sau đó, bên trong dấu ngoặc vuông, bao gồm số nguyên tương ứng với số chỉ mục của mục.

Lấy ví dụ từ trước đó, đây là cách bạn sẽ truy cập từng mục trong danh sách bằng cách sử dụng số chỉ mục của nó:

names = ["Kelly", "Nelly", "Jimmy", "Lenny"]

names[0] # Kelly
names[1] # Nelly
names[2] # Jimmy
names[3] # Lenny

Bạn cũng có thể sử dụng lập chỉ mục phủ định để truy cập các mục bên trong danh sách bằng Python.

Để truy cập vào Cuối cùng mục, bạn sử dụng giá trị chỉ mục là -1. Để truy cập mục thứ hai đến mục cuối cùng, bạn sử dụng giá trị chỉ mục là -2.

Đây là cách bạn sẽ truy cập từng mục trong danh sách bằng cách sử dụng lập chỉ mục phủ định:

names = ["Kelly", "Nelly", "Jimmy", "Lenny"]

names[-4] # Kelly
names[-3]# Nelly
names[-2] # Jimmy
names[-1] # Lenny

Tại sao Indexerror: list index out of range xảy ra lỗi trong Python?

Sử dụng một số chỉ mục nằm ngoài phạm vi của danh sách

bạn sẽ nhận được Indexerror: list index out of range lỗi khi bạn thử và truy cập một mục bằng giá trị nằm ngoài phạm vi chỉ mục của danh sách và không tồn tại.

Điều này khá phổ biến khi bạn cố gắng truy cập mục cuối cùng của danh sách hoặc mục đầu tiên nếu bạn đang sử dụng lập chỉ mục phủ định.

Hãy quay trở lại danh sách chúng ta đã sử dụng cho đến nay.

names = ["Kelly", "Nelly", "Jimmy", "Lenny"]

Giả sử tôi muốn truy cập vào mục cuối cùng, “Lenny” và thử làm như vậy bằng cách sử dụng đoạn mã sau:

print(names[4])

#output

#Traceback (most recent call last):
#  File "/Users/dionysialemonaki/python_articles/demo.py", line 3, in <module>
#    print(names[4])
#IndexError: list index out of range

Nói chung, phạm vi chỉ số của một danh sách là 0 to n-1với n là tổng số giá trị trong danh sách.

Đọc thêm  Cách sử dụng *args và **kwargs trong Python

Với tổng giá trị của danh sách trên là 4phạm vi chỉ mục là 0 to 3.

Bây giờ, hãy thử truy cập một mục bằng lập chỉ mục phủ định.

Giả sử tôi muốn truy cập mục đầu tiên trong danh sách, “Kelly”, bằng cách sử dụng lập chỉ mục phủ định.

names = ["Kelly", "Nelly", "Jimmy", "Lenny"]

print(names[-5])

#output

#Traceback (most recent call last):
#  File "/Users/dionysialemonaki/python_articles/demo.py", line 3, in <module>
#    print(names[-5])
#IndexError: list index out of range

Khi sử dụng lập chỉ mục phủ định, phạm vi chỉ mục của danh sách là -1 to -nở đâu -n tổng số mục có trong danh sách.

Với tổng số mặt hàng trong danh sách là 4phạm vi chỉ số là -1 to -4.

Sử dụng sai giá trị trong range() chức năng trong Python for vòng

bạn sẽ nhận được Indexerror: list index out of range lỗi khi lặp qua một danh sách và cố gắng truy cập một mục không tồn tại.

Một trường hợp phổ biến mà điều này có thể xảy ra là khi bạn sử dụng sai số nguyên trong Python range() chức năng.

Các range() hàm thường nhận một số nguyên, cho biết vị trí quá trình đếm sẽ dừng lại.

Ví dụ, range(5) chỉ ra rằng việc đếm sẽ bắt đầu từ và kết thúc tại 4.

Vì vậy, theo mặc định, việc đếm bắt đầu tại vị trí được tăng lên bởi 1 mỗi lần, và số lượng lên tới – nhưng không bao gồm – vị trí mà quá trình đếm sẽ dừng lại.

Hãy lấy ví dụ sau:

names = ["Kelly", "Nelly", "Jimmy", "Lenny"]

for name in range(5):
    print(names[name])
    
#output

#Kelly
#Nelly
#Jimmy
#Lenny
#Traceback (most recent call last):
#  File "/Users/dionysialemonaki/python_articles/demo.py", line 7, in <module>
#   print(names[name])
#IndexError: list index out of range

Đây, danh sách names có bốn giá trị.

Tôi muốn lặp qua danh sách và in ra từng giá trị.

Khi tôi sử dụng range(5) Tôi đã yêu cầu trình thông dịch Python in các giá trị ở các vị trí 0 to 4.

Tuy nhiên, không có mục nào ở vị trí 4.

Bạn có thể thấy điều này bằng cách in ra số vị trí đầu tiên và sau đó giá trị tại vị trí đó.

#0
#Kelly
#1
#Nelly
#2
#Jimmy
#3
#Lenny
#4
#Traceback (most recent call last):
#  File "/Users/dionysialemonaki/python_articles/demo.py", line 8, in <module>
#    print(names[name])
#IndexError: list index out of range

Bạn thấy rằng ở vị trí là “Kelly”, ở vị trí 1 là “Nelly”, ở vị trí 2 là “Jimmy” và ở vị trí 3 là “Lenny”.

Đọc thêm  Cách sử dụng Python trong Power BI

Khi nói đến vị trí bốn, được chỉ định với range(5) cho biết vị trí của 0 to 4không có gì để in ra và do đó trình thông dịch đưa ra lỗi.

Một cách để khắc phục điều này là hạ thấp số nguyên trong range():

names = ["Kelly", "Nelly", "Jimmy", "Lenny"]

for name in range(4):
    print(name)
    print(names[name])
    
#output

#0
#Kelly
#1
#Nelly
#2
#Jimmy
#3
#Lenny

Một cách khác để khắc phục điều này khi sử dụng for vòng lặp là chuyển độ dài của danh sách làm đối số cho range() chức năng. Bạn làm điều này bằng cách sử dụng len() chức năng Python tích hợp sẵn, như được hiển thị trong phần trước:

names = ["Kelly", "Nelly", "Jimmy", "Lenny"]

for name in range(len(names)):
    print(names[name])

#output

#Kelly
#Nelly
#Jimmy
#Lenny

Khi đi qua len() như một đối số để range()chắc chắn rằng bạn đừng phạm sai lầm sau:

names = ["Kelly", "Nelly", "Jimmy", "Lenny"]

for name in range(len(names) + 1):
    print(names[name])

Sau khi chạy mã, bạn sẽ lại nhận được một IndexError: list index out of range lỗi:

#Kelly
#Nelly
#Jimmy
#Lenny
#Traceback (most recent call last):
#  File "/Users/dionysialemonaki/python_articles/demo.py", line 4, in <module>
#    print(names[name])
#IndexError: list index out of range

Phần kết luận

Hy vọng rằng bài viết này đã cung cấp cho bạn một cái nhìn sâu sắc về lý do tại sao IndexError: list index out of range lỗi xảy ra và một số cách bạn có thể tránh nó.

Nếu bạn muốn tìm hiểu thêm về Python, hãy xem Chứng chỉ Python của freeCodeCamp. Bạn sẽ bắt đầu học theo cách tương tác và thân thiện với người mới bắt đầu. Cuối cùng, bạn cũng sẽ xây dựng năm dự án để đưa vào thực tế và giúp củng cố những gì bạn đã học.

Cảm ơn đã đọc và mã hóa hạnh phúc!



Zik.vn – Biên dịch & Biên soạn Lại

spot_img

Create a website from scratch

Just drag and drop elements in a page to get started with Newspaper Theme.

Buy Now ⟶

Bài viết liên quang

DMCA.com Protection Status