Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Python

Tìm phần tử danh sách bằng chỉ mục trong Python


Xét hai danh sách. Các phần tử trong danh sách thứ hai là số, cần được xem như vị trí chỉ mục cho các phần tử của danh sách thứ nhất. Đối với tình huống này, ta có các chương trình Python dưới đây.

Sử dụng map và __getitem__

Ta có thể dùng phương thức ma thuật __getitem__ để truy cập các mục danh sách. Ta có thể dùng nó cùng với hàm map, để lấy kết quả từ danh sách thứ nhất lấy các phần tử từ danh sách thứ hai làm chỉ mục của nó.

Ví dụ

listA = ['Mon', 'Tue', 'Wed', 'Thu', 'Fri'] listB = [0, 1,3] print("Danh sách cho trước A:",listA) print("Danh sách cho trước B:",listB) res=list(map(listA.__getitem__, listB)) print("Kết quả :",res)

Kết quả

Chạy mã trên cho kết quả sau −

Danh sách cho trước A: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri'] Danh sách cho trước B: [0, 1, 3] Kết quả : ['Mon', 'Tue', 'Thu']

Sử dụng itemgetter

Module operator cung cấp phương thức itemgetter có thể dùng cho mục đích này. Trong chương trình dưới đây, ta mở rộng danh sách thứ hai làm chỉ mục và áp dụng hàm itemgetter để lấy các phần tử tương ứng từ danh sách.

Ví dụ

from operator import itemgetter listA = ['Mon', 'Tue', 'Wed', 'Thu', 'Fri'] listB = [0, 1,3] print("Danh sách cho trước A:",listA) print("Danh sách cho trước B:",listB) res=list((itemgetter(*listB)(listA))) print("Kết quả :",res)

Kết quả

Chạy mã trên cho kết quả sau −

Danh sách cho trước A: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri'] Danh sách cho trước B: [0, 1, 3] Kết quả : ['Mon', 'Tue', 'Thu']

Sử dụng numpy

Thư viện numpy có thể đạt được điều này bằng cách tạo mảng lấy hai danh sách làm tham số đầu vào. Kết quả được chuyển lại thành danh sách.

Ví dụ

import numpy as np listA = ['Mon', 'Tue', 'Wed', 'Thu', 'Fri'] listB = [0, 1,3] print("Danh sách cho trước A:",listA) print("Danh sách cho trước B:",listB) res=list(np.array(listA)[listB]) print("Kết quả :",res)

Kết quả

Chạy mã trên cho kết quả sau −

Danh sách cho trước A: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri'] Danh sách cho trước B: [0, 1, 3] Kết quả : ['Mon', 'Tue', 'Thu']