利用python寻找列表中相邻元素之差绝对值为1的所有最长链
一、前言:
今天工作遇到一个问题,根据不同的柜子选取能连接在一起的所有柜子,有可能一组,也有可能几组;把这个问题简单化,就是给你一组列表[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的所有最长链相关推荐
- Python返回列表中某个元素的出现次数list.count()方法
[小白从小学Python.C.Java] [Python-计算机等级考试二级] Python返回列表中某个元素的出现次数 list.count()方法 选择题 请问以下Python代码输出的结果是什么 ...
- (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, ...
- python获取列表中指定元素的下标
python中列表元素虽然有下标,但是有时候需要特定的用途,查找指定的特殊值的元素的下标. 这时候可以用for循环,打印出来下标,但是每次都要写for循环,感觉还是有点麻烦. 比如这样 使用enume ...
- Python向列表中插入元素(列表)
向列表中插入元素 python列表中的元素种类可以是相同的也可以是不同的,如: >>> Num=["1","2","3", ...
- python返回列表中特定元素对应的索引
在使用列表这一数据结构进行数据分析时,我们会经常遇到需要返回列表中特定元素对应的所有索引的情况.我们可能会首先想到可以使用index函数返回元素索引,看一下效果: a = [1, 2, 3, 4, 2 ...
- python找列表中相邻数的个数_利用python求相邻数的方法示例
前言 本文主要给大家介绍了关于利用python求相邻数的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍: 什么是相邻数? 比如5,相邻数为4和6,和5相差1的数,连续相差为1的 ...
- python删除列表中的元素
删除指定元素 集合.remove(元素) 删除指定索引的元素,无索引数时默认删除最后一个元素 集合.pop(索引) 清空列表中的所有元素 集合.clear() 删除指定索引的元素,本质上是用来将一个变 ...
- python获取列表中某个元素个数_如何获取列表中的元素数?
How to get the size of a list? 要查找列表的大小,请使用内置函数len:items = [] items.append("apple") items. ...
- Python返回列表中某个元素的所有下标
如下所示: li = [0,1,0,2,3,0,4] 当我们想从列表中获得某个元素的索引时,通常index()函数可以实现,但当列表中存在多个相同的值的时候,index()函数只能获得列表中第一个该值 ...
最新文章
- gin框架502错误
- jQuery1.6以上attr改用prop
- LaTeX 笔记:NFSS 那点事儿
- yum安装Imagick及扩展
- ubuntu如何实现双屏显示(转)
- 神策数据:游戏企业如何做产品 A/B 测试?三大案例一次搞懂
- 深入了解 Loader
- 使用 jsfl 发布flash IDE 插件
- 使用IDEA 开发一个安卓HelloWorld的步骤
- 锐捷长ping_锐捷实战系列(二) Wireshark抓包分析Ping过程
- 4款简单实用的的服务器文件管理工具推荐
- micropython支持stm32型号_单片机仿真软件Proteus,可支持程序联调
- Netlog中数据库演变过程(转载)
- 【0代码编程】ivx简介
- 反向延长线段什么意思_反向延长线是什么意思
- GDOI2017小结
- 全球及中国智能X光安检机行业研究及十四五规划分析报告
- UE4 Gameplay
- 编译akm小车底盘控制节点
- vivo手机如何使用非官方手机主题
热门文章
- Python学习札记(十三) Function3 函数参数二
- 设置 NSZombieEnabled 定位 EXC_BAD_ACCESS 错误
- set_bit() 等位函数分析! \linux-1.0\linux\include\asm\bitops.h
- MySQL中alter table range partition
- C语言 ,嵌入式 ,数据结构 面试题目(3)
- 面试官问:malloc(0)时程序会返回什么?
- 对比一段ADC键值读取的代码
- Rockchip USB转485
- 滴滴是如何搭建起PB级数据中台的?
- java给腾讯通发消息_通过web 向rtx发送通知消息