Lấy n phần tử của danh sách theo thứ tự từ các giá trị lớn nhất và nhỏ nhất trong Python

Kinh doanh

Nếu bạn muốn lấy n phần tử của danh sách (mảng) theo thứ tự từ giá trị lớn nhất hoặc nhỏ nhất trong Python và n = 1, bạn có thể sử dụng hàm tích hợp sau.

  • max()
  • min()

Nếu n & gt; 1, có hai cách để sắp xếp danh sách hoặc sử dụng mô-đun heapq của thư viện chuẩn.

  • Nhận các giá trị lớn nhất và nhỏ nhất:max(),min()
  • Nhận n phần tử theo thứ tự giá trị lớn nhất và nhỏ nhất:loại
  • Nhận n phần tử theo thứ tự giá trị lớn nhất và nhỏ nhất:heapqMô-đun

Nếu số lượng phần tử được truy xuất lớn, sẽ hiệu quả hơn nếu sắp xếp chúng trước bằng cách sử dụng sorted () hoặc sort (), và nếu số lượng nhỏ, nargest () và nsmallest () của mô-đun heapq sẽ hiệu quả hơn.

Để nhận chỉ mục của các giá trị lớn nhất và nhỏ nhất, hãy sử dụng max (), min () và index ().

Nhận các giá trị lớn nhất và nhỏ nhất:max(),min()

Để lấy các phần tử tối đa và tối thiểu của danh sách, hãy sử dụng các hàm tích hợp max () và min ().

l = [3, 6, 7, -1, 23, -10, 18]

print(max(l))
# 23

print(min(l))
# -10

Nhận n phần tử theo thứ tự giá trị lớn nhất và nhỏ nhất:

Nếu bạn muốn lấy n phần tử của một danh sách theo thứ tự từ giá trị lớn nhất hoặc nhỏ nhất, phương pháp đầu tiên là sắp xếp (sắp xếp) danh sách.

Để sắp xếp danh sách, hãy sử dụng hàm có sẵn sorted () hoặc phương thức sort () của danh sách. sorted () trả về một danh sách được sắp xếp mới, trong khi sort () sắp xếp lại danh sách ban đầu.

Bằng cách chuyển đổi thứ tự tăng dần / giảm dần với đối số đảo ngược và chọn bất kỳ số lát cắt nào từ trên cùng, bạn có thể lấy n phần tử theo thứ tự từ giá trị lớn nhất / nhỏ nhất của danh sách.

ld = sorted(l, reverse=True)
print(ld)
# [23, 18, 7, 6, 3, -1, -10]

print(ld[:3])
# [23, 18, 7]

la = sorted(l)
print(la)
# [-10, -1, 3, 6, 7, 18, 23]

print(la[:3])
# [-10, -1, 3]

Bạn có thể viết tất cả chúng trong một dòng.

print(sorted(l, reverse=True)[:3])
# [23, 18, 7]

print(sorted(l)[:3])
# [-10, -1, 3]

Nếu bạn không ngại thay đổi thứ tự của danh sách ban đầu, bạn có thể sử dụng phương thức sort ().

print(l)
# [3, 6, 7, -1, 23, -10, 18]

l.sort(reverse=True)
print(l[:3])
# [23, 18, 7]

print(l)
# [23, 18, 7, 6, 3, -1, -10]

l.sort()
print(l[:3])
# [-10, -1, 3]

print(l)
# [-10, -1, 3, 6, 7, 18, 23]

Nhận n phần tử theo thứ tự giá trị lớn nhất và nhỏ nhất:heapqMô-đun

Nếu bạn muốn lấy n phần tử của danh sách theo thứ tự từ giá trị lớn nhất hoặc nhỏ nhất, bạn có thể sử dụng mô-đun heapq.

Sử dụng hàm sau trong mô-đun heapq. Trong trường hợp này, danh sách ban đầu sẽ không được thay đổi.

  • nlargest()
  • nsmallest()

Đối số đầu tiên là số phần tử được truy xuất và đối số thứ hai là đối số có thể lặp lại (danh sách, v.v.) được nhắm mục tiêu.

import heapq

l = [3, 6, 7, -1, 23, -10, 18]

print(heapq.nlargest(3, l))
# [23, 18, 7]

print(heapq.nsmallest(3, l))
# [-10, -1, 3]

print(l)
# [3, 6, 7, -1, 23, -10, 18]

Như tôi đã viết ở phần đầu, nếu số lượng phần tử được truy xuất lớn, sẽ hiệu quả hơn nếu sắp xếp chúng trước bằng sorted () hoặc sort (), và nếu số nhỏ, nargest () và nsmallest () of mô-đun heapq hiệu quả hơn.