Cách lặp lại danh sách trong python theo chỉ mục

Tuy nhiên, nếu bạn không quen với cú pháp hoặc muốn tìm ra các cách khác để truy cập chỉ mục trong vòng lặp for, vui lòng tham khảo

Trong hướng dẫn này, bạn học cách

  • Sử dụng hàm enumerate() để lấy chỉ số vòng lặp for
  • Cách bắt đầu chỉ mục vòng lặp ở 1 hoặc một số giá trị khác 0
  • Các cách khác để thực hiện vòng lặp for với chỉ mục, chẳng hạn như
    • Cập nhật một biến chỉ số
    • hiểu danh sách
    • Hàm zip()
    • Hàm phạm vi ()

Hàm liệt kê () trong Python

Cách đơn giản nhất để truy cập chỉ mục của vòng lặp for trong Python là sử dụng hàm enumerate() tích hợp sẵn

Trước khi xem một loạt các ví dụ, chúng ta hãy xem cách thức hoạt động của hàm enumerate()

Hàm liệt kê () hoạt động như thế nào

Hàm liệt kê () có thể được gọi trên bất kỳ lần lặp nào trong Python

Sau đó, nó kết hợp từng phần tử trong iterable với một chỉ mục và trả về kết quả dưới dạng một đối tượng liệt kê

Để trực quan hóa đối tượng liệt kê, bạn có thể chuyển đổi nó thành danh sách bằng cách sử dụng hàm list()

Ví dụ

names = ["Alice", "Bob", "Charlie"]
names_idx = enumerate(names)

print(list(names_idx))

đầu ra

[(0, 'Alice'), (1, 'Bob'), (2, 'Charlie')]

Như bạn có thể thấy, các tên trong danh sách hiện nằm trong một bộ và với mỗi tên, có một chỉ mục liên quan

Dưới đây là một minh họa của quá trình liệt kê

Python enumerate function couples elements with indexHàm liệt kê kết hợp từng phần tử với một chỉ mục

Khi bạn gọi enumerate(), việc lập chỉ mục bắt đầu từ 0 theo mặc định

Tuy nhiên, bạn có thể thay đổi điều này bằng cách chỉ định một tham số bắt đầu tùy chọn cho lệnh gọi hàm enumerate()

Chẳng hạn, hãy lập chỉ mục bắt đầu từ 1

names = ["Alice", "Bob", "Charlie"]
names_idx = enumerate(names, start=1)

print(list(names_idx))

đầu ra

[(1, 'Alice'), (2, 'Bob'), (3, 'Charlie')]

Bây giờ bạn đã hiểu cách thức hoạt động của hàm enumerate(), hãy sử dụng nó để truy cập chỉ mục trong vòng lặp for

Cách lấy chỉ mục trong vòng lặp For

Để lấy chỉ mục trong vòng lặp for

  1. Gọi hàm enumerate() trên iterable.
  2. Truy cập chỉ mục, các cặp phần tử bằng cách sử dụng vòng lặp for…in

Ví dụ

names = ["Alice", "Bob", "Charlie"]
names_idx = enumerate(names)

for index, name in names_idx:
    print(f"{name}: {index}")

đầu ra

Alice: 0
Bob: 1
Charlie: 2

Nếu bạn là người mới bắt đầu và gặp khó khăn trong việc hiểu phần index, name trong vòng lặp, vui lòng xem bài viết giải nén tuple

Nhân tiện, bạn không cần lưu trữ riêng biến lặp được liệt kê thành một biến riêng. Thay vào đó, bạn có thể gọi trực tiếp hàm enumerate() khi bắt đầu vòng lặp for

Điều này giúp bạn tiết kiệm một dòng mã

Ví dụ

names = ["Alice", "Bob", "Charlie"]

for index, name in enumerate(names):
    print(f"{name}: {index}")

đầu ra

Alice: 0
Bob: 1
Charlie: 2

Tiếp theo, chúng ta hãy xem cách thay đổi chỉ mục bắt đầu liệt kê

Cách bắt đầu lập chỉ mục ở giá trị tùy chỉnh

Trong ví dụ trước, việc lập chỉ mục bắt đầu từ 0

Tuy nhiên, điều khá phổ biến là bạn muốn lập chỉ mục bắt đầu từ một nơi khác ngoài 0

May mắn thay, hàm enumerate() cho phép chỉ định một chỉ số bắt đầu khác không

Vòng lặp for có chỉ số khác 0

  1. Gọi hàm enumerate() trên iterable và chỉ định start parameter.
  2. Truy cập chỉ mục, các cặp phần tử bằng cách sử dụng vòng lặp for…in

Ví dụ: hãy lập chỉ mục bắt đầu từ 1

Alice: 0
Bob: 1
Charlie: 2
0

đầu ra

Alice: 0
Bob: 1
Charlie: 2
1

Liệt kê hoạt động với tất cả các lần lặp

Cho đến nay, bạn mới chỉ thấy cách truy cập chỉ mục vòng lặp for khi xử lý các danh sách trong Python

Tuy nhiên, bạn có thể gọi hàm enumerate() trên bất kỳ kiểu lặp nào trong Python, chẳng hạn như bộ hoặc chuỗi

Nhân tiện, nếu bạn không quen với iterables, vui lòng xem hướng dẫn đầy đủ này

Ví dụ: hãy lấy chỉ số của từng chữ cái trong một chuỗi

Alice: 0
Bob: 1
Charlie: 2
2

đầu ra

Alice: 0
Bob: 1
Charlie: 2
3

Bây giờ bạn đã hiểu cách sử dụng hàm enumerate() để lấy chỉ số của vòng lặp for trong Python

Đây là một giải pháp tao nhã cho vấn đề. Tôi khuyên bạn nên gắn bó với nó

Tuy nhiên, để hoàn thiện, tôi sẽ chỉ ra các cách khác để lập chỉ mục cho các vòng lặp

Các cách thay thế cho vòng lặp với chỉ mục

Dưới đây là danh sách các cách khác để truy cập chỉ mục vòng lặp for trong Python

Biến chỉ mục riêng biệt

Cách cơ bản nhất để lấy chỉ mục của vòng lặp for là theo dõi biến chỉ mục

Điều này thường được dạy trong các khóa học lập trình cấp độ mới bắt đầu. Ngoài ra, một số ngôn ngữ lập trình thậm chí không có chức năng như enumerate() mà bạn có thể sử dụng

Chẳng hạn, hãy in tên và vị trí của chúng trong danh sách

Alice: 0
Bob: 1
Charlie: 2
4

đầu ra

Alice: 0
Bob: 1
Charlie: 2

Nhược điểm của phương pháp này là bạn cần nhớ cập nhật biến chỉ mục bổ sung. Điều này giới thiệu mã không cần thiết và làm cho mã dễ bị lỗi và hành vi ngoài ý muốn

Bởi vì có một hàm enumerate() riêng biệt dành để giải quyết vấn đề này, tốt hơn là sử dụng nó để thay thế

Hàm zip()

Đưa ra một phần tử có thể lặp lại và một danh sách các chỉ số riêng biệt, bạn có thể ghép hai phần tử này lại với nhau bằng hàm zip()

Ví dụ

Alice: 0
Bob: 1
Charlie: 2
6

đầu ra

Alice: 0
Bob: 1
Charlie: 2

Tuy nhiên, điều này thường không thực tế do thực tế là bạn nên chỉ định một chuỗi riêng cho các chỉ số

Nếu bạn không có danh sách chỉ mục riêng, tất nhiên bạn có thể tạo một danh sách bằng cách sử dụng hàm range() và sau đó nén nó cùng với danh sách

Alice: 0
Bob: 1
Charlie: 2
8

đầu ra

Alice: 0
Bob: 1
Charlie: 2

Dù sao, làm điều này khá vô ích vì hàm enumerate() tích hợp thực hiện chính xác điều này với ít mã hơn và dễ hiểu hơn

Hàm phạm vi ()

Trong Python, bạn có thể sử dụng hàm range() để tạo một dãy số từ điểm bắt đầu đến điểm kết thúc

Thật dễ dàng để lặp lại một phạm vi trong Python

Với độ dài của một lần lặp, bạn có thể tạo một loạt các chỉ mục bằng cách sử dụng hàm range(). Sau đó, bạn có thể sử dụng các chỉ số này để truy cập các phần tử của iterable trong vòng lặp for

Ví dụ

names = ["Alice", "Bob", "Charlie"]
names_idx = enumerate(names)

print(list(names_idx))
0

đầu ra

Alice: 0
Bob: 1
Charlie: 2

Danh sách hiểu

Cuối cùng nhưng không kém phần quan trọng, bạn có thể đã nghe nói về khả năng hiểu danh sách trong Python

Khả năng hiểu danh sách cung cấp cách viết tắt một dòng để sử dụng vòng lặp for. Sử dụng hiểu danh sách không bao giờ là bắt buộc. Đôi khi có thể thuận tiện để chuyển đổi một vòng lặp for cơ bản thành một cách hiểu danh sách một lớp ngắn

Dù sao, bạn có thể sử dụng khả năng hiểu danh sách khi muốn truy cập chỉ mục của vòng lặp for

Chẳng hạn, hãy kết hợp khả năng hiểu danh sách và hàm enumerate() để tạo một vòng lặp rút gọn với chỉ mục

names = ["Alice", "Bob", "Charlie"]
names_idx = enumerate(names)

print(list(names_idx))
2

đầu ra

Alice: 0
Bob: 1
Charlie: 2

Mặc dù biểu thức này giúp bạn tiết kiệm một dòng mã, nhưng người ta có thể tranh luận rằng nó trông gọn gàng hơn khi được sử dụng như một vòng lặp for thông thường

Hãy thận trọng để không hy sinh chất lượng mã với khả năng hiểu

Phần kết luận

Hôm nay bạn đã học cách truy cập chỉ mục trong vòng lặp for trong Python

Tóm lại, có một hàm enumerate() tích hợp có thể được gọi trên bất kỳ iterable nào. Nó kết hợp các phần tử với một chỉ mục mà bạn có thể sử dụng khi lặp qua nó

Ngoài việc sử dụng hàm enumerate(), còn có rất nhiều tùy chọn (thường tệ hơn) để lặp với chỉ mục

Làm cách nào để lặp qua chỉ mục danh sách trong Python?

Bạn có thể truy cập chỉ mục ngay cả khi không sử dụng enumerate(). .
Sử dụng vòng lặp for, lặp qua độ dài của my_list. Chỉ số biến vòng lặp bắt đầu từ 0 trong trường hợp này
Trong mỗi lần lặp lại, hãy lấy giá trị của danh sách tại chỉ mục hiện tại bằng cách sử dụng câu lệnh value = my_list[index]
In giá trị và chỉ mục

Bạn có thể lập chỉ mục vào một danh sách trong Python không?

Nó cho phép bạn lưu trữ một tập hợp liệt kê các mục ở một nơi và truy cập một mục theo vị trí của nó – chỉ mục. Ở đây chúng tôi đã xác định một danh sách các màu. Mỗi mục trong danh sách có một giá trị (tên màu) và một chỉ mục (vị trí của nó trong danh sách). Python sử dụng lập chỉ mục dựa trên số không .

Bạn có thể lập chỉ mục một lần lặp trong Python không?

Sử dụng phương thức enumerate(), bạn có thể truy cập chỉ mục của các đối tượng có thể lặp lại . phương thức enumerate() có hai tham số. các đối tượng có thể lặp lại (chẳng hạn như danh sách, tuple) và tham số bắt đầu. phương thức enumerate() bắt đầu bằng 0 (theo mặc định). Nó trả về các đối tượng liệt kê.

Làm cách nào để kiểm tra chỉ mục trong vòng lặp Python?

Đây là cách bạn có thể truy cập các chỉ số và phần tử của mảng bằng cách sử dụng vòng lặp for-in. .
Vòng các phần tử với bộ đếm và toán tử +=. .
Vòng lặp các phần tử bằng phương thức enumerate(). .
Sử dụng riêng chỉ mục và giá trị. .
Bạn có thể thay đổi số chỉ mục thành bất kỳ số gia nào. .
Tăng bộ đếm tự động với phạm vi (len (