Python使用sort和class实现的多级排序功能示例
本文实例讲述了Python使用sort和class实现的多级排序功能。分享给大家供大家参考,具体如下:
#-*-coding:utf-8-*- importrandom classTemp: def__init__(self,a,b,c): self.a=a self.b=b self.c=c def__str__(self): return(('[a:%db:%dc:%d]'%(self.a,self.b,self.c))) defcmp1(temp1,temp2): if(temp1.a>temp2.a): return1; elif(temp1.a==temp2.a): if(temp1.b>temp2.b): return1; elif(temp1.b==temp2.b): return0; else: return-1; else: return-1; defcmp2(temp1): returntemp1.a temp=[] foriinrange(200): a=random.randint(1,100) b=random.randint(1,100) c=random.randint(1,100) temp.append(Temp(a,b,c)) #foriinrange(10): #print(temp[i]) # print print #foriinsorted(temp,cmp=cmp1): #print(temp[i]) temp.sort(cmp1) foriinrange(200): print(temp[i])
运行结果:
[a:1b:61c:91]
[a:1b:62c:4]
[a:1b:66c:6]
[a:1b:73c:8]
[a:2b:24c:100]
[a:2b:26c:26]
[a:2b:52c:90]
[a:4b:69c:36]
[a:4b:100c:66]
[a:7b:59c:10]
[a:7b:97c:24]
[a:8b:32c:84]
[a:8b:49c:90]
[a:9b:13c:22]
[a:9b:29c:99]
[a:10b:52c:11]
[a:11b:2c:62]
[a:11b:20c:56]
[a:11b:38c:17]
[a:11b:72c:2]
[a:12b:13c:48]
[a:15b:39c:24]
[a:15b:64c:84]
[a:16b:31c:89]
[a:16b:60c:15]
[a:16b:68c:33]
[a:17b:44c:97]
[a:17b:82c:41]
[a:17b:96c:4]
[a:19b:47c:22]
[a:19b:97c:91]
[a:20b:35c:87]
[a:20b:45c:71]
[a:20b:58c:45]
[a:21b:5c:29]
[a:21b:12c:1]
[a:21b:24c:84]
[a:21b:27c:41]
[a:21b:34c:4]
[a:21b:44c:38]
[a:21b:63c:60]
[a:21b:88c:60]
[a:22b:15c:39]
[a:23b:6c:90]
[a:23b:45c:36]
[a:23b:95c:92]
[a:24b:44c:48]
[a:24b:79c:86]
[a:25b:40c:24]
[a:25b:80c:46]
[a:25b:100c:40]
[a:26b:34c:74]
[a:26b:79c:23]
[a:27b:6c:51]
[a:27b:8c:8]
[a:27b:28c:86]
[a:27b:71c:48]
[a:28b:5c:9]
[a:29b:11c:91]
[a:29b:42c:17]
[a:29b:47c:21]
[a:31b:80c:86]
[a:32b:18c:24]
[a:32b:30c:29]
[a:32b:81c:55]
[a:33b:33c:10]
[a:33b:36c:83]
[a:34b:11c:27]
[a:34b:60c:52]
[a:34b:62c:45]
[a:34b:72c:37]
[a:35b:81c:50]
[a:35b:88c:3]
[a:36b:11c:64]
[a:36b:57c:93]
[a:36b:92c:2]
[a:38b:58c:83]
[a:39b:39c:66]
[a:39b:47c:15]
[a:40b:13c:3]
[a:40b:50c:66]
[a:40b:99c:71]
[a:41b:14c:48]
[a:42b:23c:38]
[a:42b:26c:30]
[a:42b:32c:60]
[a:42b:33c:61]
[a:43b:27c:53]
[a:43b:66c:69]
[a:43b:69c:81]
[a:43b:71c:51]
[a:44b:8c:60]
[a:44b:20c:7]
[a:44b:48c:51]
[a:44b:59c:45]
[a:45b:55c:95]
[a:47b:45c:25]
[a:47b:79c:16]
[a:48b:10c:32]
[a:48b:17c:17]
[a:48b:80c:63]
[a:49b:90c:32]
[a:49b:93c:54]
[a:50b:14c:95]
[a:50b:21c:75]
[a:50b:41c:24]
[a:50b:54c:98]
[a:50b:81c:70]
[a:51b:33c:62]
[a:52b:53c:87]
[a:53b:68c:68]
[a:53b:70c:74]
[a:53b:74c:96]
[a:54b:33c:16]
[a:55b:80c:74]
[a:55b:88c:99]
[a:55b:95c:44]
[a:56b:14c:81]
[a:56b:70c:87]
[a:57b:29c:21]
[a:57b:81c:51]
[a:58b:79c:11]
[a:58b:80c:87]
[a:60b:78c:100]
[a:61b:82c:48]
[a:62b:35c:64]
[a:62b:65c:24]
[a:62b:99c:100]
[a:63b:7c:61]
[a:64b:24c:86]
[a:64b:41c:52]
[a:64b:42c:40]
[a:64b:63c:92]
[a:66b:9c:51]
[a:66b:68c:78]
[a:66b:78c:30]
[a:66b:94c:74]
[a:67b:75c:41]
[a:67b:78c:78]
[a:68b:39c:91]
[a:68b:42c:19]
[a:68b:42c:63]
[a:69b:15c:89]
[a:69b:34c:86]
[a:69b:37c:11]
[a:69b:44c:87]
[a:69b:95c:68]
[a:70b:44c:98]
[a:70b:79c:61]
[a:71b:28c:95]
[a:71b:81c:38]
[a:72b:92c:1]
[a:74b:34c:74]
[a:74b:67c:72]
[a:75b:4c:70]
[a:76b:79c:90]
[a:77b:71c:73]
[a:78b:19c:28]
[a:79b:5c:17]
[a:79b:84c:100]
[a:79b:89c:2]
[a:79b:99c:33]
[a:81b:17c:70]
[a:81b:95c:97]
[a:83b:47c:51]
[a:84b:22c:68]
[a:84b:45c:35]
[a:84b:49c:63]
[a:84b:90c:89]
[a:85b:41c:78]
[a:85b:60c:19]
[a:85b:61c:84]
[a:86b:37c:12]
[a:86b:63c:17]
[a:87b:5c:7]
[a:87b:53c:25]
[a:87b:79c:38]
[a:88b:4c:90]
[a:89b:8c:34]
[a:89b:59c:21]
[a:90b:1c:5]
[a:90b:50c:87]
[a:91b:93c:63]
[a:92b:81c:47]
[a:92b:89c:27]
[a:92b:94c:51]
[a:94b:37c:71]
[a:95b:25c:15]
[a:95b:39c:56]
[a:95b:59c:39]
[a:96b:9c:64]
[a:96b:50c:20]
[a:97b:12c:45]
[a:97b:24c:95]
[a:97b:36c:72]
[a:97b:41c:40]
[a:97b:80c:7]
[a:99b:33c:23]
[a:99b:56c:16]
[a:100b:51c:66]
几点需要说明的:
- sort接受三个默认的参数,一定要理解cmp函数的含义。我的理解:当a>b时,return1;意思越大的值越往后排
- 在cmp1()函数中一定要用returna-b,而前往不要returna>b.因为在Python中,有a==b的时候的判断,感觉和c++不太一样
PS:这里再为大家推荐一款关于排序的演示工具供大家参考:
在线动画演示插入/选择/冒泡/归并/希尔/快速排序算法过程工具:
http://tools.jb51.net/aideddesign/paixu_ys
更多关于Python相关内容感兴趣的读者可查看本站专题:《Python数据结构与算法教程》、《Python列表(list)操作技巧总结》、《Python编码操作技巧总结》、《Python函数使用技巧总结》、《Python字符串操作技巧汇总》及《Python入门与进阶经典教程》
希望本文所述对大家Python程序设计有所帮助。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。