python代码实现将列表中重复元素之间的内容全部滤除


Posted in Python onMay 22, 2020

1. 引言

因为在学习遗传算法路径规划的内容,其中遗传算法中涉及到了种群的初始化,而在路径规划的种群初始化中,种群初始化就是先找到一条条从起点到终点的路径,也因此需要将路径中重复节点之间的路径删除掉(避免走回头路),这样子初始种群会比较优越,也能加快算法收敛速度。然后我在搜资料的时候发现,许多的代码都是滤除列表中相同元素的,并没有滤除相同元素中间段的代码,因此就自己写了。

2. 代码部分

我在python程序中把每一条路径用列表表示的,因此每一个列表就是一条路径比如
a = [0,1,3,4,5,6,3,4,7,3,5,8,9,8,10,13,11,12,10]
a就是一条路径起点为0,终点为10,但是可以看到,中间有许多回头路。因此设计算法将冗余部分滤除。代码如下,带有详细注释:

a = [0,1,3,4,5,6,3,4,7,3,5,8,9,8,10,13,11,12,10]#初始列表

def fiter(a):    #定义一个函数
  for i in a:   #遍历列表中的内容
    a = a[a.index(i)+1:]  #把当前内容索引的后面的内容剪切下来 因为前面的已经比对过了
    if i in a:   #如果当前内容与后面有重复
      return i,1  #返回当前重复的内容 以及标志位1
    else:      #没有重复就不用管 继续for循环
      pass 
  return 0,0 #全部遍历完 没有重复的就返回0 这里返回两个0 是因为返回的数量要保持一致
b = 1  #标志位 
while(b == 1): #标志位一直是 1 则说明有重复的内容
  (i,b) = fiter(a)    #此时接受函数接收 返回值 i是重复的内容 b是标志位
  c = [j for j,x in enumerate(a) if x==i] #将重复内容的索引全部添加进c列表中
  a = a[0:c[0]]+a[c[-1]:]   #a列表切片在重组
print(a)

3. 结果

python代码实现将列表中重复元素之间的内容全部滤除

这段代码还有改进的地方,可以把整体代码封装成函数,留着慢慢品吧

4. 续

算了,放在遗传算法总工程中,发现还是要封装起来,直接贴代码吧
代码如下:

a = [0,1,3,4,5,6,3,4,7,3,5,8,9,8,10,13,11,12,10]
class Fiter:
  def __init__(self):
    self.b = 1  #标志位
  def function(self,a):    #定义一个函数
    for i in a:   #遍历列表中的内容
      a = a[a.index(i)+1:]  #把当前内容索引的后面的内容剪切下来 因为前面的已经比对过了
      if i in a:   #如果当前内容与后面有重复
        return i,1  #返回当前重复的内容 以及标志位1
      else:      #没有重复就不用管 继续for循环
        pass 
    return 0,0 #全部遍历完 没有重复的就返回0 这里返回两个0 是因为返回的数量要保持一致
  
  def fiter(self,a):
    while(self.b == 1): #标志位一直是 1 则说明有重复的内容
      (i,self.b) = self.function(a)    #此时接受函数接收 返回值 i是重复的内容 b是标志位
      c = [j for j,x in enumerate(a) if x==i] #将重复内容的索引全部添加进c列表中
      a = a[0:c[0]]+a[c[-1]:]   #a列表切片在重组
    return (a)
fiter = Fiter() #实例化
a = fiter.fiter(a) #调用方法 返回已经滤除的列表
print(a)

这里直接封装成了类对象,使用得时候先实例化再调用方法就行了。结果和上面的结果是一样的。

总结

到此这篇关于python代码实现将列表中重复元素之间的内容全部滤除的文章就介绍到这了,更多相关python列表重复元素滤除内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
python爬虫_自动获取seebug的poc实例
Aug 05 Python
Python3 操作符重载方法示例
Nov 23 Python
python中正则表达式 re.findall 用法
Oct 23 Python
python脚本调用iftop 统计业务应用流量的思路详解
Oct 11 Python
python 画函数曲线示例
Dec 04 Python
python 定义类时,实现内部方法的互相调用
Dec 25 Python
Python图像处理库PIL的ImageEnhance模块使用介绍
Feb 26 Python
PyCharm 无法 import pandas 程序卡住的解决方式
Mar 09 Python
如何把外网python虚拟环境迁移到内网
May 18 Python
使用Python-OpenCV消除图像中孤立的小区域操作
Jul 05 Python
python爬虫数据保存到mongoDB的实例方法
Jul 28 Python
python使用glob检索文件的操作
May 20 Python
Tensorflow实现将标签变为one-hot形式
May 22 #Python
Python selenium爬取微博数据代码实例
May 22 #Python
python实现文法左递归的消除方法
May 22 #Python
使用Django搭建网站实现商品分页功能
May 22 #Python
Tensorflow卷积实现原理+手写python代码实现卷积教程
May 22 #Python
Python实现发票自动校核微信机器人的方法
May 22 #Python
基于django micro搭建网站实现加水印功能
May 22 #Python
You might like
CI框架(CodeIgniter)操作redis的方法详解
2018/01/25 PHP
javascript 兼容FF的onmouseenter和onmouseleave的代码
2008/07/19 Javascript
js中判断用户输入的值是否为空的简单实例
2013/12/23 Javascript
js 删除数组的几种方法小结
2014/02/21 Javascript
extjs_02_grid显示本地数据、显示跨域数据
2014/06/23 Javascript
laytpl 精致巧妙的JavaScript模板引擎
2014/08/29 Javascript
超级好用的jQuery圆角插件 Corner速成
2014/08/31 Javascript
javascript强制点击广告的方法
2015/02/06 Javascript
jQuery使用hide方法隐藏页面上指定元素的方法
2015/03/30 Javascript
JS实现点击按钮控制Div变宽、增高及调整背景色的方法
2015/08/05 Javascript
js实现适用于素材网站的黑色多级菜单导航条效果
2015/08/24 Javascript
RequireJS多页面应用实例分析
2016/06/29 Javascript
原生javascript 学习之js变量全面了解
2016/07/14 Javascript
javascript中的后退和刷新实现方法
2016/11/10 Javascript
JavaScript中日常收集常见的10种错误(推荐)
2017/01/08 Javascript
vue2.0 路由不显示router-view的解决方法
2018/03/06 Javascript
Vue2.2.0+新特性整理及注意事项
2018/08/22 Javascript
Vue $mount实战之实现消息弹窗组件
2019/04/22 Javascript
jquery.pager.js分页实现详解
2019/07/29 jQuery
js代码实现轮播图
2020/05/04 Javascript
PyCharm代码回滚,恢复历史版本的解决方法
2018/10/22 Python
Python函数的参数常见分类与用法实例详解
2019/03/30 Python
python实现Dijkstra算法的最短路径问题
2019/06/21 Python
详解mac python+selenium+Chrome 简单案例
2019/11/08 Python
Tensorflow 多线程与多进程数据加载实例
2020/02/05 Python
德国汉莎航空中国官网: Lufthansa中国
2017/03/30 全球购物
加拿大高尔夫超市:Golf Town
2018/01/12 全球购物
普通大学毕业生自荐信范文
2014/02/23 职场文书
精彩广告词大全
2014/03/19 职场文书
关于安全演讲稿
2014/05/09 职场文书
员工生日会策划方案
2014/06/14 职场文书
个人创业事迹材料
2014/12/30 职场文书
家长学校教学计划
2015/01/19 职场文书
拖欠货款起诉状
2015/05/20 职场文书
二年级数学教学反思
2016/02/16 职场文书
Oracle更换为MySQL遇到的问题及解决
2021/05/21 Oracle