Python Liệt kê chỉ mục() với ví dụ
Danh sách là một thùng chứa các mục thuộc các loại dữ liệu khác nhau (ints, float, Boolean, string, v.v.) theo một trình tự 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 viết 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 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 thay đổi trong danh sách đã tạo bằng cách thêm các mục mới hoặc bằng cách 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ó nhiều phương thức có sẵn trong một danh sách và một trong những phương thức quan trọng là chỉ mục().
Python Danh sách chỉ mục()
Phương thức list index() giúp bạn tìm chỉ số thấp nhất đầu tiên của phần tử đã cho. Nếu có phần tử trùng lặp trong danh sách, chỉ mục đầu tiên của phần tử sẽ được trả về. Đây là cách dễ dàng và đơn giản nhất để lấy chỉ mục.
Ngoài phương thức index() tích hợp sẵn của danh sách, bạn cũng có thể sử dụng các cách khác để lấy chỉ mục, ví dụ như...ping Thông qua danh sách, sử dụng list comprehensions, enumerate(), các phương thức filter.
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ố Kỹ thuật
| Thông số Kỹ thuật | Mô tả Chi tiết |
|---|---|
| thành phần | Phần tử mà bạn muốn lấy chỉ mục. |
| Bắt đầu | Tham số này là tùy chọn. Bạn có thể xác định chỉ mục start: để tìm kiếm phần tử. Nếu không được cung cấp, giá trị mặc định là 0. |
| cuối | Tham số này là tùy chọn. Bạn có thể chỉ định chỉ mục cuối cùng cho phần tử cần tìm kiếm. Nếu không đưa ra thì được xem xét đến cuối danh sách. |
Trở lại giá trị
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ẽ đưa ra lỗi, ví dụ: ValueError: 'Element' is not in the list.
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 2 The index of element F is 5
Ví dụ: Sử dụng bắt đầu và kết thúc trong chỉ mục()
Trong ví dụ này sẽ cố gắng giới hạn việc tìm kiếm theo 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 startindex
print("The index of element D is ", my_list.index('D', 1))
Đầu ra:
The index of element C is 2 The index of element F is 5 The 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ư 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, in <module>
print("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ó đưa ra chỉ mục của phần tử được truyền dưới dạng đối số.
Bây giờ hãy xem xét danh sách như sau: 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ể lấy được nhiều chỉ mục như 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ỉ số 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 = -1
while True:
try:
elementindex = my_list.index('Guru', elementindex+1)
result.append(elementindex)
except ValueError:
break
print("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 khả 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 trong danh sách.
Danh sách hiểu là Python các hàm được sử dụng để tạo các 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à bảo trì hơn.
Ví dụ sau đây 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à hàm có sẵn trong python. Bạn có thể sử dụng enumerate để 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 như một đối tượng có thể lặp lại (tức là một đối tượng có thể được lặp) và đầu ra là một đối tượng có bộ đếm cho mỗi mục.
Ví dụ sau đây cho thấy cách sử dụng enumerate trong 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 hàm đã 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 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 trong 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 và nhập nó.
Dưới đây là các bước 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ả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, bằng cách sử dụngnp.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 np
my_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 xác định vị trí mô-đun 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 danh sách như trong ví dụ bên dưới:
from more_itertools import locate
my_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ổng kết
- 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ễ dàng và đơn giản nhất để 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ẽ báo lỗi, ví dụ: ValueError: 'Element' is not in list.
- Ngoài phương thức liệt kê 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, ví dụ như...ping Thông qua danh sách, sử dụng list comprehensions, sử dụng enumerate(), sử dụng filter, 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 trong danh sách.
- Danh sách hiểu là Python các hàm đượ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à bảo trì hơn.
- Bạn có thể sử dụng enumerate để lấy tất cả các chỉ mục của phần tử trong danh sách.
- Hàm Enumerate() là hàm được tích hợp sẵn trong python. Nó lấy đầu vào như một đối tượng có thể lặp lại (tức là một đối tượng có thể được lặp) và đầu ra là một đối tượng có bộ đếm cho mỗi mục.
- Phương thức filter() lọc danh sách đã cho dựa trên hàm đã cho.
- Thư viện Numpy được sử dụng đặc biệt cho mảng. Bạn có thể sử dụng NumPy để lấy chỉ mục của phần tử được đưa ra 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.
