Danh sách là một vùng chứa lưu trữ các mục có kiểu dữ liệu khác nhau (ints, float, Boolean, string, v.v.) trong một chuỗi có thứ tự. Đây là một cấu trúc dữ liệu quan trọng được tích hợp sẵn trong Python. Dữ liệu được ghi bên trong dấu ngoặc vuông ([]) và các giá trị được phân tách bằng dấu phẩy (,).
Các mục bên trong danh sách được lập chỉ mục với phần tử đầu tiên bắt đầu từ chỉ số 0. Bạn có thể thực hiện các thay đổi trong danh sách đã tạo bằng cách thêm các mục mới hoặc cập nhật, xóa các mục hiện có. Nó cũng có thể có các mục trùng lặp và một danh sách lồng nhau.
Có rất nhiều phương thức có sẵn trên một danh sách, và một trong những phương thức quan trọng là index ().
Trong hướng dẫn này, bạn sẽ học:
- Chỉ mục danh sách Python ()
- Sử dụng vòng lặp for để lấy chỉ mục của một phần tử trong danh sách
- Sử dụng vòng lặp while và list.index ()
- Sử dụng tính năng hiểu danh sách để lấy chỉ mục của phần tử trong danh sách
- Sử dụng Enumerate để lấy chỉ mục của một phần tử trong danh sách
- Sử dụng bộ lọc để lấy chỉ mục của một phần tử trong danh sách
- Sử dụng NumPy để lấy chỉ mục của một phần tử trong danh sách
- Sử dụng more_itertools.locate () để lấy chỉ mục của một phần tử trong danh sách
Chỉ mục danh sách Python ()
Phương thức list index () giúp bạn tìm chỉ mục thấp nhất đầu tiên của phần tử đã cho. Nếu có các phần tử trùng lặp bên trong danh sách, chỉ mục đầu tiên của phần tử được trả về. Đây là cách dễ nhất và đơn giản để lấy chỉ mục.
Bên cạnh phương thức danh sách index () được tích hợp sẵn, bạn cũng có thể sử dụng các cách khác để lấy chỉ mục như lặp qua danh sách, sử dụng các phương thức hiểu danh sách, liệt kê (), bộ lọc.
Phương thức list index () trả về chỉ số thấp nhất đầu tiên của phần tử đã cho.
Cú pháp
list.index(element, start, end)
Thông số
Thông số | Sự miêu tả |
thành phần | Phần tử mà bạn muốn lấy chỉ mục. |
khởi đầu | Tham số này là tùy chọn. Bạn có thể xác định start: index để tìm kiếm phần tử. Nếu không được cung cấp, giá trị mặc định là 0. |
kết thúc | Tham số này là tùy chọn. Bạn có thể chỉ định chỉ mục kết thúc cho phần tử cần tìm kiếm. Nếu không được đưa ra, nó được coi là cho đến cuối danh sách. |
Giá trị trả lại
Phương thức list index () trả về chỉ mục của phần tử đã cho. Nếu phần tử không có trong danh sách, phương thức index () sẽ gây ra lỗi, ví dụ: ValueError: 'Element' không có trong danh sách.
Ví dụ: Để tìm chỉ số của phần tử đã cho.
Trong danh sách my_list = ['A', 'B', 'C', 'D', 'E', 'F'], chúng ta muốn biết chỉ số của phần tử C và F.
Ví dụ dưới đây cho thấy cách lấy chỉ mục.
my_list = ['A', 'B', 'C', 'D', 'E', 'F']print("The index of element C is ", my_list.index('C'))print("The index of element F is ", my_list.index('F'))
Đầu ra:
The index of element C is 2The index of element F is 5
Ví dụ: Sử dụng start và end trong index ()
Trong ví dụ này sẽ cố gắng giới hạn tìm kiếm chỉ mục trong danh sách bằng cách sử dụng chỉ mục bắt đầu và kết thúc.
my_list = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J']print("The index of element C is ", my_list.index('C', 1, 5))print("The index of element F is ", my_list.index('F', 3, 7))#using just the startindexprint("The index of element D is ", my_list.index('D', 1))
Đầu ra:
The index of element C is 2The index of element F is 5The index of element D is 3
Ví dụ: Để kiểm tra phương thức index () với một phần tử không có mặt.
Khi bạn cố gắng tìm kiếm chỉ mục trong danh sách cho phần tử không có mặt, bạn sẽ gặp lỗi như hình dưới đây:
my_list = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J']print("The index of element C is ", my_list.index('Z'))
Đầu ra:
Traceback (most recent call last):File "display.py", line 3, inprint("The index of element C is ", my_list.index('Z'))ValueError: 'Z' is not in list
Sử dụng vòng lặp for để lấy chỉ mục của một phần tử trong danh sách
Với phương thức list.index (), chúng ta đã thấy rằng nó cung cấp chỉ mục của phần tử được truyền dưới dạng đối số.
Bây giờ hãy coi danh sách là: my_list = ['Guru', 'Siya', 'Tiya', 'Guru', 'Daksh', 'Riya', 'Guru']. Tên 'Guru' xuất hiện 3 lần trong chỉ mục và tôi muốn tất cả các chỉ mục có tên 'Guru'.
Sử dụng vòng lặp for, chúng ta sẽ có thể nhận được nhiều chỉ mục như được hiển thị trong ví dụ bên dưới.
my_list = ['Guru', 'Siya', 'Tiya', 'Guru', 'Daksh', 'Riya', 'Guru']all_indexes = []for i in range(0, len(my_list)) :if my_list[i] == 'Guru' :all_indexes.append(i)print("Originallist ", my_list)print("Indexes for element Guru : ", all_indexes)
Đầu ra:
Originallist ['Guru', 'Siya', 'Tiya', 'Guru', 'Daksh', 'Riya', 'Guru']Indexes for element Guru : [0, 3, 6]
Sử dụng vòng lặp while và list.index ()
Sử dụng vòng lặp while sẽ lặp qua danh sách đã cho để lấy tất cả các chỉ mục của phần tử đã cho.
Trong danh sách: my_list = ['Guru', 'Siya', 'Tiya', 'Guru', 'Daksh', 'Riya', 'Guru'], chúng ta cần tất cả các chỉ mục của phần tử 'Guru'.
Dưới đây là một ví dụ cho thấy cách lấy tất cả các chỉ mục bằng vòng lặp while
my_list = ['Guru', 'Siya', 'Tiya', 'Guru', 'Daksh', 'Riya', 'Guru']result = []elementindex = -1while True:try:elementindex = my_list.index('Guru', elementindex+1)result.append(elementindex)except ValueError:breakprint("OriginalList is ", my_list)print("The index for element Guru is ", result)
Đầu ra:
OriginalList is ['Guru', 'Siya', 'Tiya', 'Guru', 'Daksh', 'Riya', 'Guru']The index for element Guru is [0, 3, 6]
Sử dụng tính năng hiểu danh sách để lấy chỉ mục của phần tử trong danh sách
Để có được tất cả các chỉ mục, một cách nhanh chóng và đơn giản là sử dụng khả năng hiểu danh sách trên danh sách.
Hiểu danh sách là các hàm Python được sử dụng để tạo chuỗi mới (chẳng hạn như danh sách, từ điển, v.v.), tức là sử dụng các chuỗi đã được tạo.
Chúng giúp giảm các vòng lặp dài hơn và làm cho mã của bạn dễ đọc và dễ bảo trì hơn.
Ví dụ sau cho thấy cách thực hiện:
my_list = ['Guru', 'Siya', 'Tiya', 'Guru', 'Daksh', 'Riya', 'Guru']print("Originallist ", my_list)all_indexes = [a for a in range(len(my_list)) if my_list[a] == 'Guru']print("Indexes for element Guru : ", all_indexes)
Đầu ra:
Originallist ['Guru', 'Siya', 'Tiya', 'Guru', 'Daksh', 'Riya', 'Guru']Indexes for element Guru : [0, 3, 6]
Sử dụng Enumerate để lấy chỉ mục của một phần tử trong danh sách
Hàm Enumerate () là một hàm tích hợp sẵn với python. Bạn có thể sử dụng liệt kê để lấy tất cả các chỉ mục của phần tử trong danh sách. Nó nhận đầu vào là một đối tượng có thể lặp lại (tức là một đối tượng có thể được lặp lại) và đầu ra là một đối tượng có bộ đếm đối với từng mục.
Ví dụ sau đây cho thấy cách sử dụng liệt kê trên một danh sách để lấy tất cả các chỉ mục cho phần tử đã cho.
my_list = ['Guru', 'Siya', 'Tiya', 'Guru', 'Daksh', 'Riya', 'Guru']print("Originallist ", my_list)print("Indexes for element Guru : ", [i for i, e in enumerate(my_list) if e == 'Guru'])
Đầu ra:
Originallist ['Guru', 'Siya', 'Tiya', 'Guru', 'Daksh', 'Riya', 'Guru']Indexes for element Guru : [0, 3, 6]
Sử dụng bộ lọc để lấy chỉ mục của một phần tử trong danh sách
Phương thức filter () lọc danh sách đã cho dựa trên chức năng đã cho. Mỗi phần tử của danh sách sẽ được chuyển đến hàm và các phần tử bắt buộc sẽ được lọc dựa trên điều kiện được đưa ra trong hàm.
Chúng ta hãy sử dụng phương thức filter () để lấy các chỉ mục cho phần tử đã cho trong danh sách.
Ví dụ sau đây cho thấy cách sử dụng bộ lọc trên danh sách.
my_list = ['Guru', 'Siya', 'Tiya', 'Guru', 'Daksh', 'Riya', 'Guru']print("Originallist ", my_list)all_indexes = list(filter(lambda i: my_list[i] == 'Guru', range(len(my_list))))print("Indexes for element Guru : ", all_indexes)
Đầu ra:
Originallist ['Guru', 'Siya', 'Tiya', 'Guru', 'Daksh', 'Riya', 'Guru']Indexes for element Guru : [0, 3, 6]
Sử dụng NumPy để lấy chỉ mục của một phần tử trong danh sách
Thư viện NumPy được sử dụng đặc biệt cho mảng. Vì vậy, ở đây sẽ sử dụng NumPy để lấy chỉ mục của phần tử chúng ta cần từ danh sách đã cho.
Để sử dụng NumPy, chúng ta phải cài đặt nó và nhập nó.
Dưới đây là các bước cho tương tự:
Bước 1) Cài đặt NumPy
pip install numpy
Bước 2) Nhập Mô-đun NumPy.
import numpy as np
Bước 3) Sử dụng np.array để chuyển đổi danh sách thành một mảng
my_list = ['Guru', 'Siya', 'Tiya', 'Guru', 'Daksh', 'Riya', 'Guru']np_array = np.array(my_list)
Bước 4) Lấy chỉ mục của phần tử bạn muốn, usingnp.where ()
item_index = np.where(np_array == 'Guru')[0]
Mã làm việc cuối cùng với đầu ra như sau:
import numpy as npmy_list = ['Guru', 'Siya', 'Tiya', 'Guru', 'Daksh', 'Riya', 'Guru']np_array = np.array(my_list)item_index = np.where(np_array == 'Guru')[0]print("Originallist ", my_list)print("Indexes for element Guru :", item_index)
Đầu ra:
Originallist['Guru', 'Siya', 'Tiya', 'Guru', 'Daksh', 'Riya', 'Guru']Indexes for element Guru : [0 3 6]
Sử dụng more_itertools.locate () để lấy chỉ mục của một phần tử trong danh sách
More_itertools.locate () giúp tìm chỉ mục của phần tử trong danh sách. Mô-đun này sẽ hoạt động với phiên bản python 3.5+. Gói more_itertools phải được cài đặt trước để sử dụng nó.
Sau đây là các bước để cài đặt và sử dụng more_itertools
Bước 1) Cài đặt more_itertools bằng pip (trình quản lý gói python). Lệnh là
pip install more_itertools
Bước 2) Sau khi cài đặt xong, hãy nhập mô-đun định vị như hình dưới đây
from more_itertools import locate
Bây giờ bạn có thể sử dụng mô-đun định vị trên một danh sách như được hiển thị bên dưới trong ví dụ:
from more_itertools import locatemy_list = ['Guru', 'Siya', 'Tiya', 'Guru', 'Daksh', 'Riya', 'Guru']print("Originallist : ", my_list)print("Indexes for element Guru :", list(locate(my_list, lambda x: x == 'Guru')))
Đầu ra:
Originallist : ['Guru', 'Siya', 'Tiya', 'Guru', 'Daksh', 'Riya', 'Guru']Indexes for element Guru : [0, 3, 6]
Tóm lược:
- Phương thức list index () giúp bạn tìm chỉ mục của phần tử đã cho. Đây là cách dễ nhất và đơn giản để lấy chỉ mục.
- Phương thức list index () trả về chỉ mục của phần tử đã cho.
- Nếu phần tử không có trong danh sách, phương thức index () sẽ gây ra lỗi, ví dụ: ValueError: 'Element' không có trong danh sách.
- Bên cạnh phương pháp danh sách tích hợp, bạn cũng có thể sử dụng các cách khác để lấy chỉ mục như lặp qua danh sách, sử dụng hiểu danh sách, sử dụng enumerate (), sử dụng bộ lọc, v.v.
- Sử dụng vòng lặp for và vòng lặp while để lấy nhiều chỉ mục của một phần tử nhất định.
- Để có được tất cả các chỉ mục, một cách nhanh chóng và đơn giản là sử dụng khả năng hiểu danh sách trên danh sách.
- Hiểu danh sách là các hàm Python được sử dụng để tạo chuỗi mới.
- Chúng giúp giảm các vòng lặp dài hơn và làm cho mã của bạn dễ đọc và dễ bảo trì hơn.
- Bạn có thể sử dụng liệt kê để lấy tất cả các chỉ mục của phần tử trong danh sách.
- Hàm Enumerate () là một hàm tích hợp sẵn với python. Nó nhận đầu vào là một đối tượng có thể lặp lại (tức là một đối tượng có thể được lặp lại) và đầu ra là một đối tượng có bộ đếm đối với từng mục.
- Phương thức filter () lọc danh sách đã cho dựa trên chức năng đã cho.
- Thư viện Numpy được sử dụng đặc biệt cho các mảng. Bạn có thể sử dụng NumPy để lấy chỉ mục của phần tử đã cho trong danh sách.
- More_itertools.locate () là một thư viện python khác giúp tìm các chỉ mục của danh sách đã cho.