Python හි විශාලතම සහ කුඩාම අගයන්ගෙන් ලැයිස්තුවක n මූලද්‍රව්‍ය අනුපිළිවෙලට ලබා ගැනීම

ව්යාපාරික

ඔබට Python හි ඇති විශාලතම හෝ කුඩාම අගයෙන් සහ n=1 වලින් ලැයිස්තුවක (array) n මූලද්‍රව්‍ය ලබා ගැනීමට අවශ්‍ය නම්, ඔබට පහත බිල්ට් ශ්‍රිතය භාවිතා කළ හැක.

  • max()
  • min()

n>1 නම්, ලැයිස්තුව වර්ග කිරීමට හෝ සම්මත පුස්තකාලයේ heapq මොඩියුලය භාවිතා කිරීමට ක්‍රම දෙකක් තිබේ.

  • උපරිම සහ අවම අගයන් ලබා ගන්න:max(),min()
  • උපරිම සහ අවම අගය අනුව n මූලද්‍රව්‍ය ලබා ගන්න:වර්ග කරන්න
  • උපරිම සහ අවම අගය අනුව n මූලද්‍රව්‍ය ලබා ගන්න:heapqමොඩියුලය

ලබා ගත යුතු මූලද්‍රව්‍ය සංඛ්‍යාව විශාල නම්, ඒවා ප්‍රථමයෙන් sorted() හෝ sort() භාවිතයෙන් වර්ග කිරීම වඩාත් කාර්යක්ෂම වන අතර එම සංඛ්‍යාව කුඩා නම්, heapq මොඩියුලයේ nargest() සහ nsmallest() වඩාත් කාර්යක්ෂම වේ.

උපරිම සහ අවම අගයන්හි දර්ශක ලබා ගැනීම සඳහා, 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()

පළමු තර්කය නැවත ලබා ගත යුතු මූලද්‍රව්‍ය සංඛ්‍යාව වන අතර දෙවන තර්කය ඉලක්ක කළ යුතු පුනරාවර්තනය (ලැයිස්තුව, ආදිය) වේ.

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]

මා මුලදී ලියා ඇති පරිදි, ලබා ගත යුතු මූලද්‍රව්‍ය සංඛ්‍යාව විශාල නම්, ඒවා පළමුව වර්ග කළ () හෝ වර්ග () ලෙස වර්ග කිරීම වඩා කාර්යක්ෂම වන අතර, එම සංඛ්‍යාව කුඩා නම්, nargest() සහ nsmallest() heapq මොඩියුලය වඩාත් කාර්යක්ෂම වේ.