একটি লিস্টে প্রতিটি এলিমেন্টের র্যাঙ্ক (সর্টেড অর্ডারে অবস্থান) বের করতে একটি ফাংশন ব্যবহার করা হয়। এটি প্রতিটি এলিমেন্টের সাথে অন্যদের তুলনা করে র্যাঙ্ক নির্ধারণ করে। টাই হলে গড় র্যাঙ্ক দেয়।
উদাহরণ
def find_rank_elem(my_list):
my_result = [0 for x in range(len(my_list))]
for elem in range(len(my_list)):
(r, s) = (1, 1)
for j in range(len(my_list)):
if j != elem and my_list[j] < my_list[elem]:
r += 1
if j != elem and my_list[j] == my_list[elem]:
s += 1
my_result[elem] = r + (s - 1) / 2
return my_result
my_list = [1, 3, 5, 3, 1, 26, 99, 45, 67, 12]
print("The list is :")
print(my_list)
print("The resultant list is :")
print(find_rank_elem(my_list))
আউটপুট
The list is : [1, 3, 5, 3, 1, 26, 99, 45, 67, 12]
The resultant list is : [1, 3, 5, 3, 1, 7, 10, 8, 9, 6]
ব্যাখ্যা
find_rank_elemফাংশন একটি লিস্ট নেয় এবং র্যাঙ্ক লিস্ট রিটার্ন করে।- প্রতিটি এলিমেন্টের জন্য অন্য সব এলিমেন্টের সাথে তুলনা করা হয়।
r= ছোট মানগুলোর সংখ্যা + ১,s= সমান মানগুলোর সংখ্যা।- টাই হলে গড় র্যাঙ্ক:
r + (s - 1) / 2। - বাহিরে লিস্ট ডিফাইন করে ফাংশন কল করা হয় এবং আউটপুট প্রিন্ট করা হয়।
নোট: এটি O(n²) অ্যালগরিদম। বড় লিস্টের জন্য scipy.stats.rankdata বা প্যান্ডাস .rank() ব্যবহার করা ভালো।