python的编程使用过程中,list列表结构我想是必不可少的,这也是python里面非常非常重要的一种数据结构,list可以用来模拟Queue队列还可以用来模拟Stack堆栈等等,非常的强大,今天在使用列表的时候有一个需求就是需要对嵌套列表进行排序,什么是嵌套列表呢,简单来说就是:列表内的元素也是列表,对于这样的列表对象我一般习惯称之为“嵌套列表”,当然如果只嵌套一层的话你也可以叫它矩阵。

对于列表的排序,可以使用python内置的sort或者是sorted函数来快速地实现升序或者是降序的排序,但是对于嵌套列表这样的方法不能够直接使用了,因为在python中列表本身不是可直接比较的对象,sort和sorted就无法直接使用了,但是,无法直接使用并不代表不能使用,下面是我的具体实践,都很简单,觉得有必要总结一下,就在这里贴一下代码:

#!usr/bin/env python
#encoding:utf-8
from __future__ import division'''
__Author__:沂水寒城
功能:  嵌套列表排序
'''import operatordef sortFunc1(data_list,index=-3):'''借助于 operator 模块实现排序'''data_list.sort(key=operator.itemgetter(index)) print '======================= sorted data_list ==================='print data_listdef sortFunc2(data_list,index=-3):'''基于内置函数 sorted  实现排序'''data_list=sorted(data_list,key=lambda i:i[index])print '======================= sorted data_list ==================='print data_listdata_list.sort(key=lambda i:i[index], reverse=True)print '======================= sorted data_list ==================='print data_listdef sortFunc3(data_list):'''依据列表中元素的数量来排序'''data_list=sorted(data_list,key=lambda i:len(i))print '======================= sorted data_list ==================='print data_listdef sortFunc4(data_list):'''依据列表中元素总和来排序'''data_list=sorted(data_list,key=lambda i:sum(i))print '======================= sorted data_list ==================='print data_listdef sortFunc5(data_list):'''依据列表中元素绝对值的总和来排序'''data_list=sorted(data_list,key=lambda i:sum([abs(one) for one in i]))print '======================= sorted data_list ==================='print data_listdef sortFunc6(data_list):'''依据列表中元素最大值来排序'''data_list=sorted(data_list,key=lambda i:max(i))print '======================= sorted data_list ==================='print data_listdef sortFunc7(data_list):'''依据列表中元素最小值来排序'''data_list=sorted(data_list,key=lambda i:min(i))print '======================= sorted data_list ==================='print data_listif __name__=='__main__':data_list=[['A',2,3,'apple','p',45,9],['D',23,13,'orange','q',23,19],['C',12,3,'banana','s',22,29],['E',42,23,'water','p',14,98],['F',2,3,'snow','k',5,8],['G',12,43,'rain','m',41,12],['L',12,33,'ice','n',15,19],['O',12,13,'cream','b',31,25]]sortFunc1(data_list,index=-3)sortFunc2(data_list,index=-3)data_list=[['E',42,12,23,'p',14,98],['A','p',45,9],['D',13,'orange','q',23,19],['C',3,'s',22,29],['E',42,12,23,'water','p',14,98]]sortFunc3(data_list)data_list=[[42,12,23,14,98],[45,9],[13,-100,3,19],[6,3,-5,22,29],[42,12,23,14,98]]sortFunc4(data_list)sortFunc5(data_list)sortFunc6(data_list)sortFunc7(data_list)

结果如下:

======================= sorted data_list ===================
[['O', 12, 13, 'cream', 'b', 31, 25], ['F', 2, 3, 'snow', 'k', 5, 8], ['G', 12, 43, 'rain', 'm', 41, 12], ['L', 12, 33, 'ice', 'n', 15, 19], ['A', 2, 3, 'apple', 'p', 45, 9], ['E', 42, 23, 'water', 'p', 14, 98], ['D', 23, 13, 'orange', 'q', 23, 19], ['C', 12, 3, 'banana', 's', 22, 29]]
======================= sorted data_list ===================
[['O', 12, 13, 'cream', 'b', 31, 25], ['F', 2, 3, 'snow', 'k', 5, 8], ['G', 12, 43, 'rain', 'm', 41, 12], ['L', 12, 33, 'ice', 'n', 15, 19], ['A', 2, 3, 'apple', 'p', 45, 9], ['E', 42, 23, 'water', 'p', 14, 98], ['D', 23, 13, 'orange', 'q', 23, 19], ['C', 12, 3, 'banana', 's', 22, 29]]
======================= sorted data_list ===================
[['C', 12, 3, 'banana', 's', 22, 29], ['D', 23, 13, 'orange', 'q', 23, 19], ['A', 2, 3, 'apple', 'p', 45, 9], ['E', 42, 23, 'water', 'p', 14, 98], ['L', 12, 33, 'ice', 'n', 15, 19], ['G', 12, 43, 'rain', 'm', 41, 12], ['F', 2, 3, 'snow', 'k', 5, 8], ['O', 12, 13, 'cream', 'b', 31, 25]]
======================= sorted data_list ===================
[['A', 'p', 45, 9], ['C', 3, 's', 22, 29], ['D', 13, 'orange', 'q', 23, 19], ['E', 42, 12, 23, 'p', 14, 98], ['E', 42, 12, 23, 'water', 'p', 14, 98]]
======================= sorted data_list ===================
[[13, -100, 3, 19], [45, 9], [6, 3, -5, 22, 29], [42, 12, 23, 14, 98], [42, 12, 23, 14, 98]]
======================= sorted data_list ===================
[[45, 9], [6, 3, -5, 22, 29], [13, -100, 3, 19], [42, 12, 23, 14, 98], [42, 12, 23, 14, 98]]
======================= sorted data_list ===================
[[13, -100, 3, 19], [6, 3, -5, 22, 29], [45, 9], [42, 12, 23, 14, 98], [42, 12, 23, 14, 98]]
======================= sorted data_list ===================
[[13, -100, 3, 19], [6, 3, -5, 22, 29], [45, 9], [42, 12, 23, 14, 98], [42, 12, 23, 14, 98]]

在日常的使用中,需要什么样的功能都可以基于上述的几个示例函数来进行改造,个人觉得还是比较方便的。

python实现嵌套列表按指定位置元素排序、按子列表长度、子列表之和、绝对值和、最大/最小值排序相关推荐

  1. list -- set方法——替换列表中指定位置的元素

    set方法用于替换列表中指定位置的元素. 返回值:索引位置替换前的元素. 参数:index用于指定要替换元素所在位置的索引. 参数:element用于指定要存储在指定位置的元素. 示例  本示例使用L ...

  2. 顺序表-顺序表的基本操作(初始化+指定位置元素值 + 用元素值求下标)

    顺序表的存储结构: typedef struct{int data[Maxsize]; //存在顺序表中的元素int length; //存放顺序表的长度}SqList; 一.初始化顺序表算法: vo ...

  3. C语言练习7—一维数组删除指定位置元素

    题目 在一维数组删除指定位置元素,现定义第一个元素位置为1,一维数组元素个数不确定,需要动态输入,并返回删除元素后的数组以及被删除的元素. 例如输入数组个数为n = 4:将要删除的数组元素位置是2: ...

  4. python awk 读文件_测试python awk sed 读取文件指定位置时的性能

    #!/bin/env python #coding:utf8 ''' awk 打印指定行数 sed 打印指定行数 python 打印指定位置,某长度字符串 awk 耗时最长,很长 sed awk 时间 ...

  5. 【Java数据结构】链表的增、删、返回指定位置元素(添加泛型)

    修改变量名称的小技巧 想要修改多个相同的变量名称,选中想要改名的变量,按alt+shift+R重构,可以一次更改多个相同变量名称 代码 Node.java package cn.hanquan.tes ...

  6. python列表删除指定索引元素_如何按索引从列表中删除元素?

    与其他提到的pop和del一样,是删除给定索引项的有效方法.然而,仅仅是为了完成(因为在Python中,同样的事情可以通过多种方式完成): 使用切片(这不会就地从原始列表中删除项目): (在使用Pyt ...

  7. Python 删除列表中指定的元素

    remove方法用于按值删除元素,返回值为None:pop方法用于按下标删除元素,返回值为删除的元素. # remove方法用于按值删除元素,返回值为None:pop方法用于按下标删除元素,返回值为删 ...

  8. python列表获取最后一个元素的方法_Python3基础 pop 取出列表的最后一个元素

    镇场诗: 诚听如来语,顿舍世间名与利.愿做地藏徒,广演是经阎浮提. 愿尽吾所学,成就一良心博客.愿诸后来人,重现智慧清净体. ------------------------------------- ...

  9. pytorch中获取指定位置元素

      这段代码的应用场景是:某个batch的sentence,有的经过了padding操作,如果获取每句话中实际的最后一个单词. A = torch.Tensor([[[2, 3, 1], [1, 4, ...

  10. Qt九宫格,只拉伸背景的指定位置单位像素,做到背景长度适配

    实现背景图只拉伸固定位置(223px)其他不规则区域不进行拉伸. 在网上查了很多资料,根据网上的方法自己重写了一份 QPixmap AnnouncementItem::NinePatch(QStrin ...

最新文章

  1. 南召天气预报软件测试,南召天气预报15天
  2. C# 控制台语音计算器
  3. 使用蚂蚁借呗会影响房贷申请吗?
  4. 【Day10】项目中如何处理安全问题
  5. 2018 区块链技术及应用峰会(BTA)·中国全日程公布!
  6. Python数据结构与算法笔记(七):数据结构——队列,链表和哈希表
  7. 合作博弈:联盟、分配和核心core
  8. ab 与 abs 测试详解
  9. java远控_基于java的远程控制 示例源码
  10. 网络打印机安装和设置技巧
  11. 好用的语音转文字的软件
  12. Linux安全之PHP木马查杀与防范
  13. Word: 是否将更改保存到WordCmds.dot中?
  14. JavaScript高级编程设计(第三版)——第四章:变量作用域和内存问题
  15. Mysql 和 Oracle 的基本知识总结
  16. 剩余空间,自由再生——城市高架桥下空间的活化再生研究
  17. 如何微信多开,Mac电脑 同时登陆一个或多个微信、QQ
  18. Kali下压缩解压缩命令大全zip、gz、tar、tar.gz、bz2、tar.bz2、bz、tar.bz、Z、tar.Z、taz、tar.tgz、zip、rar、lha
  19. client_loop: send disconnect: Broken pipe
  20. Swift学习_读取json文件重载

热门文章

  1. monkey4444勒索病毒解密方法方案成功处理复旦安全实验室
  2. org.springframework.beans.factory.UnsatisfiedDepen
  3. AWS CSAA -- 04 AWS Object Storage and CDN - S3 Glacier and CloudFront(二)
  4. solr4.2增量索引之同步(修改,删除,新增)
  5. Java实例分析:宠物商店
  6. 关于大型网站技术演进的思考(十四)--网站静态化处理—前后端分离—上(6)...
  7. Tomcat and solr 环境配置
  8. 2008年最新CCNA第二学期第十单元题目(2008-12-14 14:34:59)
  9. wifi破解到局域网渗透
  10. Xamarin.Forms 仿照京东搜索记录控件