利用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()函数只能获得列表中第一个该值 ...
最新文章
- 朱晔的互联网架构实践心得S1E6:给飞机换引擎和安全意识十原则
- linux教程 nfs,[原创]linux视频教程之NFS
- 办公用笔记本电脑哪个好_北京中仓红色办公沙发哪个品牌好
- 在word上写博客直接发到CSDN博客
- xlwings 合并单元格 读取_xlwings,让excel飞起来
- 计算机英语初级考试时间,2020年考研考试时间安排及考试科目_考研网
- Android中实现非本地图片的点击态
- linuxt gogs搭建
- Linux 安装flash
- List<String> 查找重复记录
- 计算机维修难点,计算机组装与维修习重难点.doc
- 域名检测工具-免费老域名扫描软件下载
- 拼多多不补单有什么后果?怎么避免补单风险?
- R720服务器打开Linux,戴尔服务器(R720\R820)在linux6.4下双网卡绑定具体步骤
- linux查找服务器大文件,Linux查找大文件命令
- Python 中 concurrent.futures 模块使用说明
- CommandName属性和CommandArgument属性[转]
- html anki编辑器,AnkiEditor | F-Droid - Free and Open Source Android App Repository
- python没有大括号_Python如何省略括号方法详解
- java读取excel总是有小数点的解决方案