HomeLập trìnhPythonPython Index –...

Python Index – Cách tìm chỉ mục của một phần tử trong danh sách


Khi 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 thấy 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.

Các danh sách được sắp xếp theo thứ tự, có nghĩa là trình tự mà 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ừ số 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ề kiểu 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:

hình ảnh-173
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. Nghĩa là, với 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
hình ảnh-174

Các 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ư được hiển thị ở trên.

Đọc thêm  Nối danh sách Python với Mở rộng danh sách Python – Sự khác biệt được giải thích bằng các ví dụ về phương thức mảng

Chúng ta cũng có thể thấy rằng phương thức chỉ mục sẽ tăng VauleError 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 index là:

list_var.index(item)

Chúng tôi cũng có thể chỉ định một danh sách con để tìm kiếm và cú pháp cho điều đó 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ó một book_shelf_genres danh sách trong đó chỉ mục biểu thị số kệ. 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() sẽ đưa ra sự 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 thức chỉ mục và chỉ định danh sách con để tìm kiếm. Danh sách con bắt đầu từ chỉ mục 5 cho đến hết danh sách book_shelf_genres danh sách, 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? Phương pháp chỉ mục sẽ không cung cấp cho chúng tôi mọi lần xuất hiện.

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"]
hình ảnh-229

Như được hiển thị trong đoạn mã này, chúng tôi lặp qua các chỉ mục 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 tôi lưu trữ giá trị chỉ mục đó trong một danh sách.

Đọc thêm  Cách sử dụng PyScript – Khung giao diện người dùng Python

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 lại 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 ]
hình ảnh-230

Ở đây, chúng tôi sử dụng khả năng hiểu danh sách và phương pháp chỉ mục để tìm chỉ mục của “Python” trong mỗi danh sách con.

Chúng tôi chuyển danh sách ngôn ngữ lập trình 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.

Đọc thêm  Google Colaboratory – Cách chạy mã Python trong Google Drive của bạn

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ẽ tăng ValueError. Trong trường hợp không xử lý ngoại lệ, ValueError này sẽ gây ra tình trạng 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:

books = ["Cracking the Coding Interview", "Clean Code", "The Pragmatic Programmer"]
ind = books.index("The Pragmatic Programmer") if "The Pragmatic Programmer" in books else -1
                                            
hình ảnh-180

Mộ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à

var in iterable

trong đó iterable có thể là một danh sách, bộ dữ liệu, tập hợp, 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. Nếu không, 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 là đối với các danh sách lớn, chúng tôi có thể xử lý ValueError như sau:

books = ["Cracking the Coding Interview", "Clean Code", "The Pragmatic Programmer"]
try:
    ind = books.index("Design Patterns")
except ValueError:
    ind = -1
ind
hinh-181

kế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 cách sử dụng index() phương pháp.

Chú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ị. 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