給定一個隨機序列的人員列表,我需要編寫一個函數,對人員進行排序並返回一個列表,以便老年人在列表的前面。如果我的輸入是[("M" , 23), ("F" , 19), ("M" , 30)]
,我的函數應該返回[("M", 30), ("M", 23), ("F", 19)]
。我的功能如下:排序列表而不使用.sort或排序函數(Python 3.6)
def sort_age(lst):
new_lst=[]
while lst:
max_age = lst[0][1]
oldest = lst[0]
counter = len(lst)-1
while counter > 0:
if lst[counter][1] > max_age:
max_age = lst[counter][1]
oldest = lst[counter]
counter-=1
lst.remove(oldest)
new_lst.append(oldest)
return new_lst
Python IDLE拋出ValueError: list.remove(x): x not in list
。我的代碼中的錯誤在哪裏,我該如何糾正它?
使用buitin'sorted'功能:'排序(LST,鍵=拉姆達X:X [1],反向= TRUE)'。另外,while'lst'和'counter = len(lst)-1'的組合同時從'lst'中移除元素是非常成問題的。 – Abdou