ការទទួលបានធាតុ n នៃបញ្ជីតាមលំដាប់ពីតម្លៃធំបំផុត និងតូចបំផុតនៅក្នុង Python

អាជីវកម្ម

ប្រសិនបើអ្នកចង់ទទួលបានធាតុ n នៃបញ្ជី (អារេ) តាមលំដាប់ពីតម្លៃធំបំផុត ឬតូចបំផុតនៅក្នុង Python និង n=1 អ្នកអាចប្រើមុខងារដែលភ្ជាប់មកជាមួយខាងក្រោម។

  • max()
  • min()

ប្រសិនបើ n>1 មានវិធីពីរយ៉ាងដើម្បីតម្រៀបបញ្ជី ឬប្រើម៉ូឌុល heapq នៃបណ្ណាល័យស្តង់ដារ។

  • ទទួលបានតម្លៃអតិបរមា និងអប្បបរមា:max(),min()
  • ទទួលបានធាតុ n តាមលំដាប់នៃតម្លៃអតិបរមា និងអប្បបរមា:តម្រៀប
  • ទទួលបានធាតុ n តាមលំដាប់នៃតម្លៃអតិបរមា និងអប្បបរមា:heapqម៉ូឌុល

ប្រសិនបើចំនួនធាតុដែលត្រូវទៅយកគឺមានទំហំធំ វាកាន់តែមានប្រសិទ្ធភាពក្នុងការតម្រៀបពួកវាជាមុនដោយប្រើ sorted() ឬ sort() ហើយប្រសិនបើចំនួនតូចនោះ nargest() និង nsmallest() នៃម៉ូឌុល heapq គឺមានប្រសិទ្ធភាពជាង។

ដើម្បីទទួលបានសន្ទស្សន៍នៃតម្លៃអតិបរមា និងអប្បបរមា សូមប្រើ max(), min() និង index() ។

ទទួលបានតម្លៃអតិបរមា និងអប្បបរមា:max(),min()

ដើម្បីទទួលបានធាតុអតិបរមា និងអប្បបរមានៃបញ្ជី សូមប្រើមុខងារដែលភ្ជាប់មកជាមួយ max() និង min() ។

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

print(max(l))
# 23

print(min(l))
# -10

ទទួលបានធាតុ n តាមលំដាប់នៃតម្លៃអតិបរមា និងអប្បបរមា៖ តម្រៀប

ប្រសិនបើអ្នកចង់ទទួលបានធាតុ n នៃបញ្ជីតាមលំដាប់លំដោយពីតម្លៃធំបំផុត ឬតូចបំផុត វិធីសាស្ត្រទីមួយគឺតម្រៀប (តម្រៀប) បញ្ជី។

ដើម្បីតម្រៀបបញ្ជី សូមប្រើមុខងារដែលភ្ជាប់មកជាមួយ sorted() ឬវិធី sort() នៃបញ្ជី។ sorted() ត្រឡប់បញ្ជីដែលបានតម្រៀបថ្មី ខណៈពេលដែល sort() រៀបចំឡើងវិញនូវបញ្ជីដើម។

តាមរយៈការផ្លាស់ប្តូរលំដាប់ឡើង/ចុះក្រោមជាមួយនឹងអាគុយម៉ង់បញ្ច្រាស និងជ្រើសរើសចំនួននៃចំណិតណាមួយពីកំពូល អ្នកអាចទទួលបានធាតុ n តាមលំដាប់ពីតម្លៃធំបំផុត/តូចនៃបញ្ជី។

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]

អ្នកអាចសរសេរវាទាំងអស់ក្នុងមួយជួរ។

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

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

ប្រសិនបើអ្នកមិនចាំការផ្លាស់ប្តូរលំដាប់នៃបញ្ជីដើមទេ អ្នកអាចប្រើវិធី 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]

ទទួលបានធាតុ n តាមលំដាប់នៃតម្លៃអតិបរមា និងអប្បបរមា:heapqម៉ូឌុល

ប្រសិនបើអ្នកចង់ទទួលបានធាតុ n នៃបញ្ជីតាមលំដាប់ពីតម្លៃធំបំផុត ឬតូចបំផុត អ្នកអាចប្រើម៉ូឌុល heapq ។

ប្រើមុខងារខាងក្រោមនៅក្នុងម៉ូឌុល heapq ។ ក្នុងករណីនេះ បញ្ជីដើមនឹងមិនត្រូវបានផ្លាស់ប្តូរទេ។

  • nlargest()
  • nsmallest()

អាគុយម៉ង់ទី 1 គឺជាចំនួនធាតុដែលត្រូវទៅយក ហើយអាគុយម៉ង់ទីពីរគឺអាចបកប្រែបាន (បញ្ជី។ ល។ ) ដែលត្រូវកំណត់គោលដៅ។

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]

ដូចដែលខ្ញុំបានសរសេរនៅដើម ប្រសិនបើចំនួនធាតុដែលត្រូវទៅយកគឺធំ វាកាន់តែមានប្រសិទ្ធភាពក្នុងការតម្រៀបពួកវាជាមុនដោយ sorted() ឬ sort() ហើយប្រសិនបើចំនួនតូច nargest() និង nsmallest() នៃ ម៉ូឌុល heapq មានប្រសិទ្ធភាពជាង។