Thông qua lập chỉ mục, bạn có thể lấy một mục hoặc nhiều mục từ một danh sách. Bạn chỉ có thể truy xuất một mục cụ thể từ danh sách nếu bạn biết số chỉ mục được liên kết với giá trị đó.
Để tìm giá trị chỉ mục của mục lớn nhất trong danh sách, bạn có thể sử dụng max()
và index()
các phương pháp. Hướng dẫn này sẽ hướng dẫn bạn một chương trình truy xuất giá trị chỉ mục của phần tử tối đa trong danh sách.
Python:Lấy giá trị chỉ mục của giá trị tối đa trong danh sách
Viết một chương trình truy xuất tên của học sinh đạt điểm cao nhất trong bài kiểm tra toán cuối cùng của họ. Tên này sau đó được in ra bảng điều khiển.
Để bắt đầu, hãy tạo hai danh sách:
students = ["Andy", "April", "Julia", "Gary"] grades = [75, 82, 64, 68]
Danh sách đầu tiên chứa tên của các học sinh trong lớp. Danh sách thứ hai chứa các điểm tương ứng của họ.
Các danh sách này là các mảng song song, có nghĩa là cả hai mảng đều có cùng kích thước và mỗi giá trị đại diện cho một phần của bản ghi. “Sinh viên” chứa tên và “điểm” chứa điểm mà sinh viên đó đã đạt được.
Tiếp theo, tìm điểm lớn nhất trong danh sách. Bạn có thể sử dụng hàm max () để tìm điểm lớn nhất trong danh sách:
largest = max(grades)
Mã này truy xuất số lớn nhất. Điều này không hoàn toàn lý tưởng. Bạn muốn truy xuất vị trí chỉ mục của số lớn nhất. Để làm điều đó, hãy sử dụng một hàm tích hợp khác:index (). Hãy truy xuất giá trị chỉ mục của mục lớn nhất trong danh sách:
81% người tham gia cho biết họ cảm thấy tự tin hơn về triển vọng công việc công nghệ của mình sau khi tham gia một cuộc thi đào tạo. Kết hợp với bootcamp ngay hôm nay.
Sinh viên tốt nghiệp bootcamp trung bình đã dành ít hơn sáu tháng để chuyển đổi nghề nghiệp, từ khi bắt đầu bootcamp đến khi tìm được công việc đầu tiên của họ.
index_of_largest = grades.index(largest)
Vì hai danh sách song song, số chỉ mục của điểm cao nhất trong danh sách “điểm” giống với số chỉ của học sinh đạt được điểm đó trong danh sách “sinh viên”.
Tiếp theo, in một tin nhắn tới bảng điều khiển cho chúng tôi biết ai đã đạt điểm cao nhất:
print("{} earned the highest grade in the class. Their grade was {}.".format(students[index_of_largest], largest))
Sử dụng cú pháp lập chỉ mục để lấy tên của học sinh đạt điểm cao nhất. Sau đó, thêm giá trị này và điểm họ kiếm được vào một chuỗi.
Chạy chương trình và xem điều gì sẽ xảy ra:
April earned the highest grade in the class. Their grade was 82.
Mã xác định thành công học sinh đạt điểm cao nhất. Để tìm chỉ mục của các phần tử tối thiểu, bạn có thể thay thế max()
hàm cho min()
.
Tìm nhiều chỉ mục bằng giá trị tối đa
Điều gì xảy ra nếu có hai học sinh có điểm cao nhất? Chương trình trên chỉ trả về vị trí chỉ mục của học sinh đầu tiên đã đạt được một điểm cụ thể.
Để tìm số lần xuất hiện của tất cả học sinh đã đạt được một điểm cụ thể, bạn có thể sử dụng đọc hiểu danh sách. Bắt đầu bằng cách khởi tạo các giá trị và truy xuất giá trị chỉ mục của mục lớn nhất trong danh sách như trước đó:
students = ["Andy", "April", "Julia", "Gary", "Paul"] grades = [75, 82, 64, 68, 82] largest = max(grades)
Bạn đã thêm một bản ghi để xem điều gì sẽ xảy ra nếu hai học sinh có cùng điểm trong chương trình mới.
Tiếp theo, viết một danh sách hiểu. Phần hiểu danh sách này tìm các vị trí chỉ số của tất cả các học sinh đã đạt được một điểm cụ thể:
all_grades = [g for g, x in enumerate(grades) if x == largest]
Mã này lặp lại qua từng lớp trong danh sách "điểm". Mỗi điểm được so sánh với giá trị lớn nhất trong danh sách "điểm". Nếu một giá trị bằng cấp cao nhất, nó sẽ được thêm vào danh sách.
enumerate()
hàm chia danh sách của chúng ta thành hai danh sách:số chỉ mục và giá trị. Do đó, “g” đại diện cho chỉ số của một mục trong danh sách và “x” đại diện cho giá trị của một mục.
Tiếp theo, sử dụng vòng lặp for để in ra một tin nhắn cho mỗi học sinh có điểm bằng điểm cao nhất được tìm thấy:
for g in all_grades: print("{} earned the highest grade in the class. Their grade was {}.".format(students[g], grades[g]))
Nếu có nhiều học sinh đạt điểm cao nhất trong lớp, vòng lặp for sẽ chạy nhiều lần. Mỗi khi vòng lặp chạy, tên của một học sinh được in trên bảng điều khiển với thông báo cho biết họ đạt điểm cao nhất trong lớp.
Chạy chương trình của chúng tôi:
April earned the highest grade in the class. Their grade was 82. Paul earned the highest grade in the class. Their grade was 82.
Chương trình của chúng tôi hiển thị thành công tên của tất cả học sinh đạt điểm cao nhất trong lớp.
Kết luận
Bạn có thể truy xuất giá trị chỉ mục của một mục trong danh sách bằng cách sử dụng index()
. Kết hợp với min()
hoặc max()
, bạn có thể tìm giá trị chỉ mục của mục nhỏ nhất hoặc lớn nhất trong danh sách.
Bây giờ bạn đã có kiến thức cần thiết để truy xuất giá trị chỉ mục của giá trị tối đa trong danh sách giống như một chuyên gia Python!