一、前言:

今天工作遇到一个问题,根据不同的柜子选取能连接在一起的所有柜子,有可能一组,也有可能几组;把这个问题简单化,就是给你一组列表[2, 1, 3, 4, 5, 7, 9, 8, 12, 13, 14, 15],得到相邻两个数绝对值为1的列表组合,结果:[[5, 4, 3, 2, 1], [7, 8, 9], [12, 13, 14, 15]]

二、思路:

1、遍历列表,寻找每个元素与下一个元素之差绝对值为1的元素,例如:[2,1],[1,2,3]

2、寻找完毕后,发现如下结果:[[2, 1], [3, 2, 1], [4, 3, 2, 1], [5, 4, 3, 2, 1], [7, 8, 9], [12, 13, 14, 15]],需要把小列表删除,比如:[3,2,1]包含[2,1],所以删除[2,1]

三、代码:

list1 = [2, 1, 3, 4, 5, 7, 9, 8, 12, 13, 14, 15]# 递归,寻找符合条件的所有元素元素
def get_li(list1, l, con_list):w1_list = list1.copy()w2 = list1.copy()for i in con_list:w2.remove(i)if len(w2) == 0:return con_listfor wl in w2:if abs(l - wl) == 1:con_list.append(wl)return get_li(w1_list, wl, con_list)return con_list# 得到最终的链列表
def connect_l(list1):existlist = []ds_list = []for l in list1:if l not in existlist:ws = get_li(list1, l, [l])ds_list.append(ws)for e in ws:existlist.append(e)return ds_listli = connect_l(list1)# 删除小列表,如:[3,2,1]包含[1,2],删除[1,2]得到最优列表组合
ret_li = li.copy()
for i in range(len(li) - 1):if [c for c in li[i] if c in li[i + 1]]:if li[i] in ret_li:ret_li.remove(li[i])print(ret_li)

结果:

[[5, 4, 3, 2, 1], [7, 8, 9], [12, 13, 14, 15]]

利用python寻找列表中相邻元素之差绝对值为1的所有最长链相关推荐

  1. Python返回列表中某个元素的出现次数list.count()方法

    [小白从小学Python.C.Java] [Python-计算机等级考试二级] Python返回列表中某个元素的出现次数 list.count()方法 选择题 请问以下Python代码输出的结果是什么 ...

  2. (Note)Python 统计列表中各元素出现的次数

    演示列表: Demo_list=[1,2,3,3,3,5,6,2,2,0,4,5,2,7,8,4,5,1,3,9,8,7] 1.统计列表中不同元素的个数 Demo_list=[1,2,3,3,3,5, ...

  3. python获取列表中指定元素的下标

    python中列表元素虽然有下标,但是有时候需要特定的用途,查找指定的特殊值的元素的下标. 这时候可以用for循环,打印出来下标,但是每次都要写for循环,感觉还是有点麻烦. 比如这样 使用enume ...

  4. Python向列表中插入元素(列表)

    向列表中插入元素 python列表中的元素种类可以是相同的也可以是不同的,如: >>> Num=["1","2","3", ...

  5. python返回列表中特定元素对应的索引

    在使用列表这一数据结构进行数据分析时,我们会经常遇到需要返回列表中特定元素对应的所有索引的情况.我们可能会首先想到可以使用index函数返回元素索引,看一下效果: a = [1, 2, 3, 4, 2 ...

  6. python找列表中相邻数的个数_利用python求相邻数的方法示例

    前言 本文主要给大家介绍了关于利用python求相邻数的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍: 什么是相邻数? 比如5,相邻数为4和6,和5相差1的数,连续相差为1的 ...

  7. python删除列表中的元素

    删除指定元素 集合.remove(元素) 删除指定索引的元素,无索引数时默认删除最后一个元素 集合.pop(索引) 清空列表中的所有元素 集合.clear() 删除指定索引的元素,本质上是用来将一个变 ...

  8. python获取列表中某个元素个数_如何获取列表中的元素数?

    How to get the size of a list? 要查找列表的大小,请使用内置函数len:items = [] items.append("apple") items. ...

  9. Python返回列表中某个元素的所有下标

    如下所示: li = [0,1,0,2,3,0,4] 当我们想从列表中获得某个元素的索引时,通常index()函数可以实现,但当列表中存在多个相同的值的时候,index()函数只能获得列表中第一个该值 ...

最新文章

  1. gin框架502错误
  2. jQuery1.6以上attr改用prop
  3. LaTeX 笔记:NFSS 那点事儿
  4. yum安装Imagick及扩展
  5. ubuntu如何实现双屏显示(转)
  6. 神策数据:游戏企业如何做产品 A/B 测试?三大案例一次搞懂
  7. 深入了解 Loader
  8. 使用 jsfl 发布flash IDE 插件
  9. 使用IDEA 开发一个安卓HelloWorld的步骤
  10. 锐捷长ping_锐捷实战系列(二) Wireshark抓包分析Ping过程
  11. 4款简单实用的的服务器文件管理工具推荐
  12. micropython支持stm32型号_单片机仿真软件Proteus,可支持程序联调
  13. Netlog中数据库演变过程(转载)
  14. 【0代码编程】ivx简介
  15. 反向延长线段什么意思_反向延长线是什么意思
  16. GDOI2017小结
  17. 全球及中国智能X光安检机行业研究及十四五规划分析报告
  18. UE4 Gameplay
  19. 编译akm小车底盘控制节点
  20. vivo手机如何使用非官方手机主题

热门文章

  1. Python学习札记(十三) Function3 函数参数二
  2. 设置 NSZombieEnabled 定位 EXC_BAD_ACCESS 错误
  3. set_bit() 等位函数分析! \linux-1.0\linux\include\asm\bitops.h
  4. MySQL中alter table range partition
  5. C语言 ,嵌入式 ,数据结构 面试题目(3)
  6. 面试官问:malloc(0)时程序会返回什么?
  7. 对比一段ADC键值读取的代码
  8. Rockchip USB转485
  9. 滴滴是如何搭建起PB级数据中台的?
  10. java给腾讯通发消息_通过web 向rtx发送通知消息