1. 将原列表排序,当相邻元素不同时,对原列表进行切片。

def cutList1(orList):

    orList.sort()  # 列表排序。默认从小到大    newList = []  # 空列表

    n = 0    # 每次切片的起点    for k in range(len(orList)):        if orList[k] == orList[-1]:  # 由于排过序,则当orList[k]等于列表最后一个元素值时,可以切片后退出循环            newList.append(orList[n:])  # 从orList[k]取到最后            break   # 退出循环        if orList[k] != orList[k+1]:  # 由于排过序,相邻元素不等时,就表示切子列表的时候到了            subList = orList[n:k+1]   # 切片            newList.append(subList)            n = k+1   # n用于储存每次切片的起点    return newListmyList1 = [4, 2, 1, 2, 2, 1, 1, 5, 6, 5, 4]print (cutList1(myList1))   # [[1, 1, 1], [2, 2, 2], [4, 4], [5, 5], [6]]

2. set去重先,之后计算每个元素在原列表的个数,接着直接按每个元素的个数生成新列表,最后放在一个大列表中
def cutList2(orList):

    newSeqAfterSet = set(orList)  # set去重。默认从小到大排序    newList = []    for k in newSeqAfterSet:        kCount = orList.count(k)  # 计算每个元素在元列表中的个数        kList = [k]*kCount  # 生成新列表        newList.append(kList)    return newList
myList2 = [4, 2, 1, 2, 2, 1, 1, 5, 6, 5, 4]print (cutList2(myList2))   # [[1, 1, 1], [2, 2, 2], [4, 4], [5, 5], [6]]
3. 拿列表第一个元素出来,放在临时变量中,之后循环原列表,取出相同的值,之后移除这个元素...之后循环这个操作
def cutList3(orList):

    copyList = deepcopy(orList)  # copy列表用于移除元素,保持原列表完整性

    newList = []    while 1:        if copyList == []:  # copy列表为空时退出while循环            break

        # 每次while循环都更新firstElement值,并将eleList重置为空        firstElement = copyList[0]  # copy列表第一个元素        eleList = []  # 子列表        for ele in orList:            if ele == firstElement:                eleList.append(ele)                  copyList.remove(ele) # 移除元素。for循环完成后,原列表和第一个元素相等的所有元素已经取出                # 且从copy列表中移除了这些元素

        newList.append(eleList)  

    return newList

myList3 = [4, 2, 1, 2, 2, 1, 1, 5, 6, 5, 4]print (cutList3(myList3))  # [[4, 4], [2, 2, 2], [1, 1, 1], [5, 5], [6]]

4. 从上面可以看出  4.1 方法1和2都将新生成的列表进行排序过,方法3则时按元素出现顺序排序  4.2 方法1会导致原列表被破环排序,使用前应该事先将其深复制一份  4.3 从效率上看,应该是方法2的运行时间最短。这个没有具体去看,留待以后...
 

转载于:https://www.cnblogs.com/lipx9527/p/11071427.html

python将某个列表按元素值分成多个子列表相关推荐

  1. python list分成多个_Python3 把一个列表按指定数目分成多个列表的方式

    如果我们需要将一个列表按指定数目分成多个列表:比如[1,2,3,4,5,6,7,8,9,10]分成[1,2,3][4,5,6][7,8,9][10],我们可以建立一个列表分割的函数split_list ...

  2. python 随机获取列表的元素_练习 34 - 获取列表元素 - Learn Python 3 The Hard Way

    练习 34 获取列表元素 列表(list)真的非常有用,前提是你要能获取到它们里面的内容.你已经能够按顺序遍历列表中的元素,但是如果你要取其中的第5个元素,你该怎么操操做?你需要知道如何获取一个列表里 ...

  3. Redis 笔记(04)— list类型(作为消息队列使用、在列表头部添加元素、尾部删除元素、查看列表长度、遍历指定列表区间元素、获取指定区间列表元素、阻塞式获取列表元素)

    Redis 的列表是链表而不是数组.这意味着 list 的插入和删除操作非常快,时间复杂度为 O(1),但是索引定位很慢,时间复杂度为 O(n). 当列表弹出了最后一个元素之后,该数据结构自动被删除, ...

  4. 06-列表(列表的使用、列表中元素的提取--切片、列表的通用操作、列表的方法、列表的遍历-for循环和range()函数)

    1. 序列 (sequence) 1.1 基本概念 序列是Python 中最基本的一种数据结构.序列用于保存一组有序的数据,所有的数据在序列当中都有一个唯一的位置 (索引) 并且序列中的数据会按照添加 ...

  5. python二维列表每个子列表取一个元素的所有组合

    这是一个汉字字符串: "银行卡测试" 我要求出他的拼音首字母组合, 预期:"yhkcs" 实际:"yhqcs" 没错,它含有一个多音字:卡 ...

  6. python中求二维数组元素之和_python二维列表求解所有元素之和

    相信很多初学小伙伴都会遇到二维列表求解所有元素之和问题,下面给出两种两种常见的求和方法. 方法1: 思想:遍历整个二维列表元素,然后将所有元素加起来 1 def Sum_matrix(matrix): ...

  7. python全栈工程师百科_Python全栈工程师(列表、拷贝)

    ParisGabriel 感谢 大家的支持  你们的阅读评价就是我最好的更新动力  我会坚持吧排版做的越来越好 每天坚持 一天一篇 点个订阅吧  灰常感谢    当个死粉也阔以 Python人工智能从 ...

  8. 升序排列python_Python3基础 sort 将一个列表中的值升序排列

    镇场诗: ---大梦谁觉,水月中建博客.百千磨难,才知世事无常. ---今持佛语,技术无量愿学.愿尽所学,铸一良心博客. --------------------------------------- ...

  9. 每天一小时python官方文档学习(四)————数据结构之列表

    终于进入到第五章数据结构部分了,python中常用的容器有列表.元组.集合和字典,今天主要了解的是最为常用的列表. 5. 数据结构 5.1. 列表的更多特性 对于列表的操作有很多,具体操作看官方文档就 ...

最新文章

  1. rstrip,strip,lstrip字符串内置函数
  2. jQuery滚动指定位置
  3. Spark源码和调优简介 Spark Core
  4. Source Insight 使用教程(1)——新建项目
  5. jquery获得指定元素坐标的方法
  6. python顺序执行 toggle_pythonkivymd:如何使toggle_nav_drawer()函数工作?
  7. python ssd目标检测_解读目标检测之SSD:Single Shot MultiBox Detector
  8. Oracle对表的基本操作
  9. 原生 javascript 操作 websocket
  10. uni-app运行到微信小程序模拟器
  11. 用Python自制一个百度一下,这操作可还行
  12. Linux ps命令简介
  13. PPT如何在投影不显示放映备注,在电脑上可以显示备注
  14. HTML 5 音频与视频标签
  15. ad域控查看ldap端口命令_工作笔记(一)LDAP和AD介绍以及使用LDAP操作AD域
  16. 矿大计算机考研上岸分数,这些考研院校,今年上岸更容易!初试占比高达70%!...
  17. 生活实用之清洗小龙虾
  18. aspx repeater 用法_Repeater控件的详细用法
  19. vue项目下拉框内容过长做一个滚动条的效果
  20. 大淘营淘宝店铺宝贝复制专家3.56 破解记录 不怕升级

热门文章

  1. ThinkPHP php 仿千图网源码_PHP微信表白墙源码 基于ThinkPHP框架开发
  2. linux内存管理分析 二,linux内存管理分析【二】
  3. linux 服务器 重新启动 慢,Linux系统启动缓慢解决方法[阮胜昌]
  4. python文本分析的开源工具_重磅开源:TN文本分析语言
  5. php excel 导入 显示,php Excel 导入
  6. php member limit,php 安全有关问题
  7. centos 对已有卷扩容_centos7 逻辑卷扩容
  8. php版本最低要求:5.4_Zabbix 5.0.0beta1版本初体验
  9. brew 安装java8_mac使用brew安装Java8
  10. django和flask用MD5加密密码