class Student(object): def __init__(self, name, gender, age): self.__name = name self.__gender = gender self.__age = age # 取得age属性 def getAge(self): return self.__age # 打印 def printStudent(self): return self.__name, self.__gender, self.__age
# 生成包含随机学生对象的list def generateStudent(num): # num为需要生成的测试对象数 list = [] for i in range(num): randName = ''.join(random.sample(string.ascii_letters, 4)) randGender = random.choice(['Male', 'FeMale']) randAge = random.randint(10,30) s = Student(randName, randGender, randAge) list.append(s) return list
def sortStudent(list): for i in range(len(list)): for j in range(1, len(list)-i): if list[j-1].getAge() > list[j].getAge(): list[j-1], list[j] = list[j], list[j-1] return list
sorted(list, key=lambda student: student.getAge()) # 将对象的age属性作为排序的Key
>>> pairs = [('one',1),('two',2),('three',3),('five',5),('zero',0),('four',4)]
>>> sorted(pairs, key=lambda pair: pair[1]) # List中每个tuple对的排序依据是tuple中的第2个值
[('zero', 0), ('one', 1), ('two', 2), ('three', 3), ('four', 4), ('five', 5)]
if __name__ == '__main__':
# list 形式是[('hZDw', 'FeMale', 17)...]
list = generateStudent(10000)
# 方法1:使用冒泡排序
start_Time1 = time.time()
sortStudent(list)
end_Time1 = time.time()
# 方法1中,使用10000个测试数据的排序时间是22.243秒以上(非精确)
print('%s cost time %s' % ('sortStudent' , end_Time1 - start_Time1))
# 方法2:使用Python内建的sorted方法+lambda表达式
# 由于sorted方法背后使用的timsort方法,当数据越接近Ordered data的时候,时间复杂度越接近O(N)。
# 在这个例子里面,年龄属性是比较接近Ordered data的。
start_Time2 = time.time()
sorted(list, key=lambda student: student.getAge()) # 将对象的属性作为排序的Key
end_Time2 = time.time()
print('%s cost time %s' % ('sorted' , end_Time2 - start_Time2))
机械节能产品生产企业官网模板...
大气智能家居家具装修装饰类企业通用网站模板...
礼品公司网站模板
宽屏简约大气婚纱摄影影楼模板...
蓝白WAP手机综合医院类整站源码(独立后台)...苏ICP备2024110244号-2 苏公网安备32050702011978号 增值电信业务经营许可证编号:苏B2-20251499 | Copyright 2018 - 2025 源码网商城 (www.ymwmall.com) 版权所有