列表排序
列表排序方法sort(),对原列表进行排序,改变原列表内容,如果列表中的元素都是数字,默认按升序排序,通过添加参数reverse = True可改为降序排列,如果元素都是字符串,则会按照字母表顺序排列
>>> num = [4,3,6,7,2,1]
>>> num.sort()
>>> num
[1, 2, 3, 4, 6, 7]
>>> num.sort(reverse = True)
>>> num
[7, 6, 4, 3, 2, 1]
>>> name = ['John','Connor','Bruce','Edward','Lucy']
>>> name.sort()
>>> name
['Bruce', 'Connor', 'Edward', 'John', 'Lucy']
内置排序函数
通用函数sorted(),类似sort(),但返回的是排好序的列表副本,原列表内容不变;只有当列表中所有元素都是同一种类型时,sort()和sorted()才会正常工作
>>> name = ['John','Connor','Bruce','Arthur','Edward','Lucy']
>>> sorted_name = sorted(name)
>>> sorted_name
['Arthur', 'Bruce', 'Connor', 'Edward', 'John', 'Lucy']
>>> name
['John', 'Connor', 'Bruce', 'Arthur', 'Edward', 'Lucy']
可扩展的“大小”比较及排序
class Student:
def __lt__(self,name,grade):
self.name , self.grade = name , grade
# 内置sort函数只应用<比较符来判断前后
def __lt__(self,other):
# 成绩比other高的,排在他后面
return self.grade > other.grade
# Student的易读字符串表示
def __str__(self):
return "(%s,%d)" % (self.name, self.grade)
#Student的正式字符串表示,我们让它跟易读表示相同
__repr__ = __str__
构造一个列表,加入Student对象
#构造一个list对象
s = list()
#添加Student对象到list中
s.append(Student("Jack", 80))
s.append(Student("Jane", 75))
s.append(Student("Smith", 82))
s.append(Student("Cook", 90))
s.append(student("Tom", 70))
print("Original:", s)
#对list进行排序,注意这是内置sort方法
s.sort()
#查看结果,已经按照成绩排好序
print("Sorted:", s)
直接调用列表sort方法,可以根据__lt__定义排序;直接检验Student对象的大小:s[i]>s[j];另外可以定义其它比较符__gt__等