Khi bạn học viết mã, cuối cùng bạn sẽ học về các danh sách và các thao tác khác nhau mà bạn có thể thực hiện trên chúng
Trong bài viết này, chúng ta sẽ tìm hiểu cách bạn có thể tìm chỉ mục của một phần tử cụ thể được lưu trữ trong danh sách bằng Python
Danh sách trong Python là gì?
Danh sách trong Python là một kiểu dữ liệu được tạo sẵn cho phép chúng ta lưu trữ một loạt các giá trị khác nhau, như số, chuỗi, đối tượng ngày giờ, v.v.
Danh sách được sắp xếp theo thứ tự, có nghĩa là trình tự chúng tôi lưu trữ các giá trị là quan trọng
Liệt kê các chỉ số bắt đầu từ 0 và kết thúc ở độ dài của danh sách trừ đi một. Để biết thêm thông tin chi tiết về loại dữ liệu danh sách, hãy xem hướng dẫn toàn diện này
Hãy xem một ví dụ về danh sách
fruits = ["apple", "orange","grapes","guava"]
type[fruits]
print[fruits[0]]
print[fruits[1]]
print[fruits[2]]
Ở đây, chúng tôi đã tạo một danh sách gồm 4 mục, trong đó chúng tôi thấy rằng mục đầu tiên trong danh sách nằm ở chỉ mục 0, mục thứ hai nằm ở chỉ mục 1, mục thứ ba nằm ở chỉ mục 2, v.v.
Đối với danh sách trái cây, các chỉ số danh sách hợp lệ là 0, 1, 2 và 3
Cách tìm chỉ mục của các mục trong danh sách bằng Python
Hãy làm ngược lại. Tức là, cho một mục trong danh sách, hãy tìm ra chỉ số hoặc vị trí của mục đó trong danh sách
index = fruits.index['orange']
#The value of index is 1
index = fruits.index['guava']
#The value of index is 3
index = fruits.index['banana']
#This raises a ValueError as banana is not present in list
Danh sách Python cung cấp cho chúng ta phương thức chỉ mục cho phép chúng ta lấy chỉ mục của lần xuất hiện đầu tiên của một mục danh sách, như minh họa ở trên.
Chúng ta cũng có thể thấy rằng phương thức chỉ mục sẽ tăng ValueError nếu chúng ta cố gắng tìm chỉ mục của một mục không tồn tại trong danh sách
Để biết thêm chi tiết về phương pháp lập chỉ mục, hãy xem tài liệu chính thức tại đây
Cú pháp cơ bản của phương thức chỉ mục là thế này
list_var.index[item]
Chúng tôi cũng có thể chỉ định một danh sách phụ để tìm kiếm và cú pháp cho danh sách đó là
list_var.index[item, start_index_of_sublist, end_index_of_sublist]
Để minh họa điều này hơn nữa, hãy xem xét một ví dụ
Giả sử chúng ta có danh sách book_shelf_genres trong đó chỉ mục biểu thị số giá sách. Chúng tôi có nhiều giá đựng sách toán. Số kệ cũng bắt đầu từ con số không. Chúng tôi muốn biết kệ nào sau kệ 4 có sách toán nào
book_shelf_genres = ["Fiction", "Math", "Non-fiction", "History", "Math", "Coding", "Cooking", "Math"]
index = book_shelf_genres.index["Math"]
#The value of index is 1
Chúng ta có thể thấy vấn đề ở đây. chỉ sử dụng
index = fruits.index['orange']
#The value of index is 1
index = fruits.index['guava']
#The value of index is 3
index = fruits.index['banana']
#This raises a ValueError as banana is not present in list
2 sẽ cho lần xuất hiện đầu tiên của mục trong danh sách – nhưng chúng tôi muốn biết chỉ mục của "Math" sau kệ 4Để làm điều đó, chúng tôi sử dụng phương pháp chỉ mục và chỉ định danh sách con để tìm kiếm trong. Danh sách con bắt đầu từ chỉ mục 5 cho đến hết danh sách book_shelf_genres, như được hiển thị trong đoạn mã bên dưới
index = book_shelf_genres.index["Math", 5]
#The value of index is 7
Lưu ý rằng việc đưa ra chỉ số kết thúc của danh sách phụ là tùy chọn. Để tìm mục lục của "Toán" sau ngăn số 1 và trước ngăn số 5, chúng ta chỉ cần làm như sau
index = book_shelf_genres.index["Math", 2, 5]
#The value of index is 4
Cách tìm chỉ mục của một mục danh sách có nhiều lần xuất hiện trong Python
Điều gì xảy ra nếu chúng ta cần biết chỉ mục của một mục danh sách xuất hiện nhiều lần trong danh sách?
Trong trường hợp này, chúng ta có thể tìm thấy nhiều lần xuất hiện bằng cách sử dụng tính năng hiểu danh sách như sau
book_shelf_genres = ["Fiction", "Math", "Non-fiction", "History", "Math", "Coding", \
"Cooking", "Math"]
[i for i in range[0, len[book_shelf_genres]] if book_shelf_genres[i]=="Math"]
Như được hiển thị trong đoạn mã này, chúng tôi lặp qua các chỉ số của danh sách. Tại mỗi chỉ mục, chúng tôi kiểm tra xem mục tại chỉ mục đó có phải là Toán hay không. Nếu là môn Toán thì chúng ta lưu trữ giá trị chỉ mục đó trong một danh sách.
Chúng tôi thực hiện toàn bộ quá trình này bằng cách sử dụng khả năng hiểu danh sách, đây chỉ là đường cú pháp cho phép chúng tôi lặp qua danh sách và thực hiện một số thao tác. Trong trường hợp của chúng tôi, chúng tôi đang đưa ra quyết định dựa trên giá trị của mục danh sách. Sau đó, chúng tôi tạo một danh sách mới
Với quy trình này, bây giờ chúng tôi biết tất cả các số kệ có sách toán trên đó
Cách tìm chỉ mục của các mục danh sách trong danh sách các danh sách trong Python
programming_languages = [["C","C++","Java"],["Python","Rust","R"],\
["JavaScript","Prolog","Python"]]
[ [i, x.index["Python"]] for i, x in enumerate[programming_languages] if "Python" in x ]
Ở đây chúng tôi sử dụng cách hiểu danh sách và phương pháp lập chỉ mục để tìm chỉ mục của "Python" trong mỗi danh sách phụ.
Chúng tôi chuyển danh sách programming_languages cho phương thức liệt kê đi qua từng mục trong danh sách và trả về một bộ chứa chỉ mục và mục của danh sách tại chỉ mục đó
Mỗi mục trong danh sách ngôn ngữ lập trình cũng là một danh sách. Sau đó, toán tử in sẽ kiểm tra xem "Python" có trong danh sách này hay không. Nếu có, chúng tôi lưu trữ chỉ mục danh sách con và chỉ mục của "Python" bên trong danh sách con dưới dạng một bộ
Đầu ra là một danh sách các bộ dữ liệu. Mục đầu tiên trong bộ chỉ định chỉ mục danh sách con và số thứ hai chỉ định chỉ mục trong danh sách con
Vì vậy [1,0] có nghĩa là danh sách con ở chỉ mục 1 của danh sách ngôn ngữ lập trình có mục "Python" ở chỉ mục 0
Cách tìm chỉ mục của mục danh sách có thể không tồn tại trong danh sách bằng Python
Trong nhiều trường hợp, cuối cùng chúng tôi sẽ cố gắng lấy chỉ mục của một mục nhưng chúng tôi không chắc liệu mục đó có tồn tại trong danh sách hay không
Nếu chúng ta có một đoạn mã cố gắng lấy chỉ mục của một mục không có trong danh sách, phương thức index[] sẽ gây ra lỗi ValueError. Trong trường hợp không xử lý ngoại lệ, ValueError này sẽ gây ra sự chấm dứt chương trình bất thường
Đây là hai cách mà chúng ta có thể tránh hoặc xử lý tình huống này
index = fruits.index['orange']
#The value of index is 1
index = fruits.index['guava']
#The value of index is 3
index = fruits.index['banana']
#This raises a ValueError as banana is not present in list
0Một cách là kiểm tra bằng cách sử dụng toán tử "in" xem mục đó có tồn tại trong danh sách hay không. Toán tử in có cú pháp cơ bản là
index = fruits.index['orange']
#The value of index is 1
index = fruits.index['guava']
#The value of index is 3
index = fruits.index['banana']
#This raises a ValueError as banana is not present in list
0trong đó iterable có thể là một danh sách, bộ dữ liệu, bộ, chuỗi hoặc từ điển. Nếu var tồn tại dưới dạng một mục trong iterable, toán tử in trả về True. Khác nó trả về Sai
Điều này là lý tưởng cho trường hợp của chúng tôi. Chúng ta sẽ chỉ kiểm tra xem một mục có tồn tại trong danh sách hay không và chỉ khi nó tồn tại, chúng ta mới gọi phương thức index[]. Điều này đảm bảo rằng phương thức index[] không tăng ValueError
Nếu chúng tôi không muốn mất thời gian kiểm tra xem một mục có tồn tại trong danh sách hay không, đặc biệt đối với các danh sách lớn, chúng tôi có thể xử lý ValueError như thế này
index = fruits.index['orange']
#The value of index is 1
index = fruits.index['guava']
#The value of index is 3
index = fruits.index['banana']
#This raises a ValueError as banana is not present in list
1Kết thúc
Hôm nay chúng ta đã học cách tìm chỉ mục của một mục trong danh sách bằng phương pháp
index = fruits.index['orange']
#The value of index is 1
index = fruits.index['guava']
#The value of index is 3
index = fruits.index['banana']
#This raises a ValueError as banana is not present in list
2Chúng tôi cũng đã xem cách sử dụng phương pháp chỉ mục trên danh sách con, cách tìm chỉ mục của các mục trong danh sách các danh sách, cách tìm mọi lần xuất hiện của một mục trong danh sách và cách kiểm tra các mục trong danh sách có thể không có mặt.
Tôi hy vọng bạn tìm thấy bài viết này hữu ích và đọc thú vị. Mã hóa vui vẻ
QUẢNG CÁO
QUẢNG CÁO
QUẢNG CÁO
QUẢNG CÁO
QUẢNG CÁO
QUẢNG CÁO
QUẢNG CÁO
QUẢNG CÁO
Đọc thêm bài viết
Nếu bài viết này hữu ích, hãy tweet nó
Học cách viết mã miễn phí. Chương trình giảng dạy mã nguồn mở của freeCodeCamp đã giúp hơn 40.000 người có được việc làm với tư cách là nhà phát triển. Bắt đầu