一、Python中排序函數
對list中的對象進行排序,首先要了解Python中的排序函數。Python中有兩個常用的排序函數sorted()和sort(),其中sorted()是內置函數,可以對所有的可迭代對象進行排序,而sort()是列表方法,只能對列表進行排序。
兩個函數的使用方法如下:
# sorted()函數示例 list1 = [3, 1, 4, 1, 5, 9, 2, 6] list2 = sorted(list1) # sort()方法示例 list1.sort()
需要注意的是,這兩個函數在默認情況下都是按照升序排列,如果需要按照降序排列,可以指定reverse參數為True。
# 按照降序排列示例 list1 = [3, 1, 4, 1, 5, 9, 2, 6] list2 = sorted(list1, reverse=True) # 按照降序排列示例 list1.sort(reverse=True)
二、對list對象bean進行三重分組排序
對於一個列表中的對象,可能需要按照多個字段進行排序,這時就需要對其進行多重排序。下面給出一個對list對象bean進行三重分組排序的示例。
假設有如下的一個bean對象:
class Bean(): def __init__(self, id, name, age): self.id = id self.name = name self.age = age
現在有一個包含多個Bean對象的列表list1,需要按照id、name、age進行多重排序,示例代碼如下:
list1.sort(key=lambda x: (x.id, x.name, x.age))
上述代碼中,sort()方法的key參數是一個lambda函數,該函數的返回值是一個元組,元組中包含需要排序的字段,按照元組中的字段順序排序,即按照id、name、age字段的順序進行排序。
三、list對象排序方法
除了使用Python內置的排序函數之外,還可以使用list對象自帶的一些排序方法。下面是對幾種常用方法的介紹:
1. sort()方法
sort()方法可以對列表中元素進行原地排序,即不產生新的列表,示例代碼如下:
list1 = [3, 1, 4, 1, 5, 9, 2, 6] list1.sort()
2. sorted()函數
sorted()函數可以對原列表進行排序並返回排序後的列表,示例代碼如下:
list1 = [3, 1, 4, 1, 5, 9, 2, 6] list2 = sorted(list1)
3. reverse()方法
reverse()方法可以倒序排列列表中的元素,示例代碼如下:
list1 = [3, 1, 4, 1, 5, 9, 2, 6] list1.reverse()
四、list集合對象排序
如果需要對list集合對象進行排序,可以使用sorted()函數和sort()方法,其使用方法與對列表進行排序相同,示例代碼如下:
# 使用sorted()函數對list集合對象進行排序 list1 = [{'id':1, 'name':'Tom', 'age':18}, {'id':2, 'name':'Jerry', 'age':20}, {'id':3, 'name':'Lucy', 'age':16}] list2 = sorted(list1, key=lambda x:x['age']) # 使用sort()方法對list集合對象進行排序 list1.sort(key=lambda x:x['name'])
五、對象的list集合排序
對於一個對象的list集合,如果需要按照其中某個屬性進行排序,可以使用sorted()函數和sort()方法,並指定排序的key參數為該屬性名。
假設現在有如下的一個Person對象:
class Person(): def __init__(self, name, age): self.name = name self.age = age
現在有一個包含多個Person對象的列表person_list,需要按照年齡age進行排序,示例代碼如下:
person_list = [Person('Tom', 18), Person('Jerry', 20), Person('Lucy', 16)] sorted_person_list = sorted(person_list, key=lambda x:x.age)
六、list存儲對象怎麼排序
對於一個存儲對象的list,如果需要按照其中某個屬性進行排序,可以使用sorted()函數和sort()方法,並指定排序的key參數為該屬性名。
假設現在有如下的一個Student對象:
class Student(): def __init__(self, name, score): self.name = name self.score = score
現在有一個存儲Student對象的列表student_list,需要按照分數score進行排序,示例代碼如下:
student_list = [Student('Tom', 80), Student('Jerry', 90), Student('Lucy', 70)] sorted_student_list = sorted(student_list, key=lambda x:x.score, reverse=True)
七、對象list排序sort降序
如果需要按照降序進行排序,可以在sorted()函數和sort()方法中指定reverse參數為True。
假設現在有如下的一個Teacher對象:
class Teacher(): def __init__(self, name, salary): self.name = name self.salary = salary
現在有一個包含多個Teacher對象的列表teacher_list,需要按照薪資salary進行降序排序,示例代碼如下:
teacher_list = [Teacher('Tom', 5000), Teacher('Jerry', 8000), Teacher('Lucy', 6000)] sorted_teacher_list = sorted(teacher_list, key=lambda x:x.salary, reverse=True)
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/238879.html