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

Danh sách chỉ mục nằm ngoài phạm vi – Lỗi Python [Solved]


Trong bài viết này, chúng ta sẽ nói về IndexError: list index out of range lỗi trong Python.

Trong mỗi phần của bài viết, tôi sẽ nêu rõ nguyên nhân có thể gây ra lỗi và cách khắc phục.

bạn có thể nhận được IndexError: list index out of range lỗi vì những lý do sau:

  • Đang cố truy cập một chỉ mục không tồn tại trong danh sách.
  • Sử dụng các chỉ mục không hợp lệ trong các vòng lặp của bạn.
  • Chỉ định một phạm vi vượt quá các chỉ mục trong danh sách khi sử dụng range() chức năng.

Trước khi chúng tôi tiến hành sửa lỗi, hãy thảo luận về cách lập chỉ mục hoạt động trong danh sách Python. Bạn có thể bỏ qua phần tiếp theo nếu bạn đã biết cách lập chỉ mục hoạt động.

Lập chỉ mục hoạt động như thế nào trong danh sách Python?

Mỗi mục trong danh sách Python có thể được đánh giá bằng số chỉ mục của nó. Mục đầu tiên trong danh sách có chỉ số bằng không.

Hãy xem xét danh sách dưới đây:

languages = ['Python', 'JavaScript', 'Java']

print(languages[1])
# JavaScript

Trong ví dụ trên, chúng ta có một danh sách gọi là languages. Danh sách này có ba mục — ‘Python’, ‘JavaScript’ và ‘Java’.

Để truy cập mục thứ hai, chúng tôi đã sử dụng chỉ mục của nó: languages[1]. Cái này in ra JavaScript.

Một số người mới bắt đầu có thể hiểu sai điều này. Họ có thể cho rằng vì chỉ số là 1 nên nó phải là mục đầu tiên.

Đọc thêm  Phương thức từ điển Python – Từ điển trong Python

Để dễ hiểu hơn, đây là bảng phân tích các mục trong danh sách theo chỉ mục của chúng:

Trăn (mục 1) => Chỉ số 0
JavaScript (mục 2) => Chỉ mục 1
Java (mục 3) => Chỉ số 2

Như bạn có thể thấy ở trên, mục đầu tiên có chỉ mục là 0 (vì Python là “không có chỉ mục”). Để truy cập các mục trong danh sách, bạn sử dụng chỉ mục của chúng.

Điều gì sẽ xảy ra nếu bạn cố gắng sử dụng một chỉ mục nằm ngoài phạm vi trong danh sách Python?

Nếu bạn cố gắng truy cập một mục trong danh sách bằng chỉ mục nằm ngoài phạm vi, bạn sẽ nhận được IndexError: list index out of range lỗi.

Đây là một ví dụ:

languages = ['Python', 'JavaScript', 'Java']

print(languages[3])
# IndexError: list index out of range

Trong ví dụ trên, chúng tôi đã cố gắng truy cập mục thứ tư bằng cách sử dụng chỉ mục của nó: languages[3]. chúng tôi đã nhận IndexError: list index out of range lỗi vì danh sách không có mục thứ tư – nó chỉ có ba mục.

Cách khắc phục dễ dàng là luôn sử dụng chỉ mục tồn tại trong danh sách khi cố gắng truy cập các mục trong danh sách.

Cách khắc phục IndexError: list index out of range Lỗi trong vòng lặp Python

Vòng lặp hoạt động với các điều kiện. Vì vậy, cho đến khi một điều kiện nhất định được đáp ứng, chúng sẽ tiếp tục chạy.

Trong ví dụ bên dưới, chúng tôi sẽ cố gắng in tất cả các mục trong danh sách bằng cách sử dụng while vòng.

languages = ['Python', 'JavaScript', 'Java']

i = 0

while i <= len(languages):
    print(languages[i])
    i += 1

# IndexError: list index out of range

Đoạn mã trên trả về IndexError: list index out of range lỗi. Hãy chia nhỏ mã để hiểu tại sao điều này xảy ra.

Đầu tiên, chúng tôi khởi tạo một biến i và cho nó một giá trị là 0: i = 0.

Sau đó chúng tôi đã đưa ra một điều kiện cho một while vòng lặp (đây là nguyên nhân gây ra lỗi): while i <= len(languages).

Từ điều kiện đã cho, chúng ta đang nói, “vòng lặp này sẽ tiếp tục chạy miễn là iít hơn hoặc tương đương với các chiều dài sau đó language danh sách”.

Đọc thêm  Toán tử cơ bản trong Python với các ví dụ

Các len() hàm trả về độ dài của danh sách. Trong trường hợp của chúng tôi, 3 sẽ được trả lại. Vì vậy, điều kiện sẽ là thế này: while i <= 3. Vòng lặp sẽ dừng khi i bằng 3.

Hãy giả làm trình biên dịch Python. Đây là những gì xảy ra khi vòng lặp chạy.

Đây là danh sách: languages = ['Python', 'JavaScript', 'Java']. Nó có ba chỉ mục — 0, 1 và 2.

Khi nào i là 0 => Con trăn

Khi nào i là 1 => JavaScript

Khi nào i là 2 => Java

Khi nào i là 3 => Không tìm thấy chỉ mục trong danh sách. IndexError: list index out of range ném lỗi.

Vì vậy, lỗi được đưa ra khi i bằng 3 vì không có mục nào có chỉ số là 3 trong danh sách.

Để khắc phục vấn đề này, chúng ta có thể sửa đổi điều kiện của vòng lặp bằng cách loại bỏ dấu bằng. Điều này sẽ dừng vòng lặp khi nó đến chỉ mục cuối cùng.

Đây là cách:

languages = ['Python', 'JavaScript', 'Java']

i = 0

while i < len(languages):
    print(languages[i])
    i += 1
    
    # Python
    # JavaScript
    # Java

Điều kiện bây giờ trông như thế này: while i < 3.

Vòng lặp sẽ dừng ở 2 vì điều kiện không cho phép nó bằng với giá trị được trả về bởi len() chức năng.

Cách khắc phục IndexError: list index out of range Lỗi khi sử dụng range() Chức năng trong Python

Theo mặc định, các range() trả về một “phạm vi” các số được chỉ định bắt đầu từ số không.

Đây là một ví dụ về range() chức năng sử dụng:

for num in range(5):
  print(num)
    # 0
    # 1
    # 2
    # 3
    # 4

Như bạn có thể thấy trong ví dụ trên, range(5) trả về 0, 1, 2, 3, 4.

Đọc thêm  Hướng dẫn Python cạo web – Cách cạo dữ liệu từ một trang web

Bạn có thể dùng range() chức năng với một vòng lặp để in các mục trong danh sách.

Ví dụ đầu tiên sẽ hiển thị một khối mã ném IndexError: list index out of range lỗi. Sau khi chỉ ra lý do xảy ra lỗi, chúng tôi sẽ khắc phục.

languages = ['Python', 'JavaScript', 'Java']


for language in range(4):
  print(languages[language])
    # Python
    # JavaScript
    # Java
    # Traceback (most recent call last):
    #   File "<string>", line 5, in <module>
    # IndexError: list index out of range

Ví dụ trên in tất cả các mục trong danh sách cùng với IndexError: list index out of range lỗi.

Chúng tôi đã nhận lỗi vì range(4) trả về 0, 1, 2, 3. Danh sách của chúng tôi không có chỉ mục nào có giá trị là 3.

Để khắc phục điều này, bạn có thể sửa đổi tham số trong range() chức năng. Một giải pháp tốt hơn là sử dụng độ dài của danh sách làm range() tham số của hàm.

Đó là:

languages = ['Python', 'JavaScript', 'Java']


for language in range(len(languages)):
  print(languages[language])
    # Python
    # JavaScript
    # Java

Đoạn mã trên chạy mà không có bất kỳ lỗi nào vì len() hàm trả về 3. Sử dụng nó với range(3) trả về 0, 1, 2 khớp với số mục trong danh sách.

Tóm lược

Trong bài viết này, chúng tôi đã nói về IndexError: list index out of range lỗi trong Python.

Lỗi này thường xảy ra khi chúng tôi cố gắng truy cập một mục trong danh sách bằng cách sử dụng một chỉ mục không tồn tại trong danh sách.

Chúng ta đã xem một số ví dụ cho thấy chúng ta có thể gặp lỗi như thế nào khi làm việc với các vòng lặp, len() chức năng, và range() chức năng.

Chúng tôi cũng đã thấy cách khắc phục IndexError: list index out of range lỗi cho từng trường hợp.

Chúc mừng mã hóa!



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