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追加元素到列表的方法
Jul 28 Python
Python 12306抢火车票脚本 Python京东抢手机脚本
Feb 06 Python
Python运维开发之psutil库的使用详解
Oct 18 Python
Python enumerate函数功能与用法示例
Mar 01 Python
Python 实例方法、类方法、静态方法的区别与作用
Aug 14 Python
Python的互斥锁与信号量详解
Sep 12 Python
将python安装信息加入注册表的示例
Nov 20 Python
详解有关PyCharm安装库失败的问题的解决方法
Feb 02 Python
Python: tkinter窗口屏幕居中,设置窗口最大,最小尺寸实例
Mar 04 Python
python根据字典的键来删除元素的方法
Aug 16 Python
Python中random模块常用方法的使用教程
Oct 04 Python
anaconda python3.8安装后降级
Jun 11 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
自制汽车收音机天线:收听广播的技巧和方法
2021/03/02 无线电
PHP.MVC的模板标签系统(三)
2006/09/05 PHP
php目录操作函数之获取目录与文件的类型
2010/12/29 PHP
php中0,null,empty,空,false,字符串关系的详细介绍
2013/06/20 PHP
神盾加密解密教程(二)PHP 神盾解密
2014/06/08 PHP
PHP的error_reporting错误级别变量对照表
2014/07/08 PHP
php curl 上传文件代码实例
2015/04/27 PHP
Laravel中Facade的加载过程与原理详解
2017/09/22 PHP
PHP集成环境XAMPP的安装与配置
2018/11/13 PHP
在jquery中处理带有命名空间的XML数据
2011/06/13 Javascript
仿当当网淘宝网等主流电子商务网站商品分类导航菜单
2013/09/25 Javascript
js获得参数的getParameter使用示例
2014/02/26 Javascript
详解JavaScript中数组的相关知识
2015/07/29 Javascript
JS实现鼠标滑过链接改变网页背景颜色的方法
2015/10/20 Javascript
微信小程序 实战小程序实例
2016/10/08 Javascript
jquery.Jcrop结合JAVA后台实现图片裁剪上传实例
2016/11/05 Javascript
如何解决hover在ie6中的兼容性问题
2016/12/15 Javascript
用jQuery实现优酷首页轮播图
2017/01/09 Javascript
以BootStrap Tab为例写一个前端组件
2017/07/25 Javascript
Vue实现一个无限加载列表功能
2018/11/13 Javascript
在 Vue.js中优雅地使用全局事件的方法
2019/02/01 Javascript
vue.js实现图书管理功能
2019/09/24 Javascript
package.json中homepage属性的作用详解
2020/03/11 Javascript
代码块高亮可复制显示js插件highlight.js+clipboard.js整合
2021/02/15 Javascript
解决Python 遍历字典时删除元素报异常的问题
2016/09/11 Python
python查看模块,对象的函数方法
2018/10/16 Python
python文件读写代码实例
2019/10/21 Python
Python eval函数原理及用法解析
2020/11/14 Python
英国护发和美妆在线商店:Klip Shop
2019/03/24 全球购物
Muziker英国:中欧最大的音乐家商店
2020/02/05 全球购物
房产转让协议书
2014/04/11 职场文书
解除劳动合同协议书范本
2014/09/13 职场文书
2014年小班保育员工作总结
2014/12/23 职场文书
2015教师个人工作总结范文
2015/03/31 职场文书
Django开发RESTful API实现增删改查(入门级)
2021/05/10 Python
.Net Core导入千万级数据至Mysql的步骤
2021/05/24 MySQL