Python如何从列表中删除相邻和不相邻的相同元素

 更新时间:2023年08月22日 09:55:42   作者:小琳爱分享  
这篇文章主要介绍了Python如何从列表中删除相邻和不相邻的相同元素问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

Python从列表中删除相邻和不相邻相同元素

相邻元素是不相邻元素中的一种特殊的存在,所以我们先来探讨不相邻的相同元素的删除。

不相邻元素的删除

结果:list=[1,2,3,4]
#第一种
list = [1,2,3,3,4,1,1]
new_list = []
for i in list[:]:
    if i not in new_list:  #可以删除重复元素,不管是否相邻
        new_list.append(i)
print(new_list)
# 第二种  集合可以去重  先转换成集合再转换成列表
list = [1,2,3,3,4,1,1]
print(list(set(list)))
# 第三种
list = [1,2,3,3,4,1,1]
list.sort()
new_list = []
for i in range(len(list) - 1):
    if list[i] == list[i + 1]:
        new_list.append(list[i + 1])
for j in new_list:
    list.remove(j)
print(list)
# 第四种
# fromkeys 是把所有的键都赋同样的值(如果不指定内容则默认赋值为None)
list = [1,2,3,3,4,1,1]
new_list = []
dct = dict.fromkeys(list)
# print(dct)
for n in dct:
    new_list.append(n)
print(new_list)
# 第五种  第四种方法的简写
list1 = [1,2,3,3,4,1,1]
print(list(dict.fromkeys(list1)))

相邻元素的删除

#结果:list1 = [1, 2, 3, 4, 1]
#第一种,比较相邻两个值,若相同,则del其中一个,逐个遍历,直到没有重复的。
list1 = [1,2,2,3,3,4,1,1]
for i in range(len(list1) - 1, 0, -1):
    if list1[i] == list1[i-1]:
        del list1[i]
print(list1)
#第二种,使用itertools库
import itertools
list1 = [1,2,2,3,3,4,1,1]
new_list1 = [k for k, g in itertools.groupby(list1)]
print(new_list1)
#第三种 生成器(generator)
#其中del_adjacent()是一个生成器类型,需要使用list转换成列表
list1 = [1,2,2,3,3,4,1,1]
def del_adjacent(iterable):
 prev = object()
 for iterm in iterable:
     if iterm != prev:
         prev = iterm
         yield iterm
a = list(del_adjacent(list1))
print(a)

python比较列表相邻元素(找相同或去重)

python列表去除相邻重复相等数据(只保留一个)

In [1]: import itertools
In [2]: a=[0, 1, 3, 2, 4, 4, 5, 6, 7, 8, 10, 11, 12, 13, 14, 16, 16, 17, 18, 18, 19, 20, 20, 21, 22, 22, 22, 23, 23, 23, 26, 29, 29, 30, 32, 33, 34, 32, 32, 15, 24]
In [3]: b=[k for k, _ in itertools.groupby(a)]
In [4]: print(b)
[0, 1, 3, 2, 4, 5, 6, 7, 8, 10, 11, 12, 13, 14, 16, 17, 18, 19, 20, 21, 22, 23, 26, 29, 30, 32, 33, 34, 32, 15, 24]

python列表找到相邻元素相同的元素值

(理解了 m=a[1:] n=a[:-1] 得到的就是要比较的前后数据之后,你就可以轻松地做玩转相邻元素啦)

In [22]: import numpy as np
In [23]: a=[0, 1, 3, 2, 4, 4, 5, 6, 7, 8, 10, 11, 12, 13, 14, 16, 16, 17, 18, 18, 19, 20, 20, 21, 22, 22, 22, 23, 23, 23, 26, 29, 29, 30, 32, 33, 34, 32, 32, 15, 24]
In [24]: m=a[1:]
In [25]: n=a[:-1]
In [26]: len(a)
Out[26]: 41
In [27]: len(m)
Out[27]: 40
In [28]: len(n)
Out[28]: 40
In [29]: c=[i[0]==i[1] for i in zip(m, n)]
In [30]: print(c)
[False, False, False, False, True, False, False, False, False, False, False, False, False, False, False, True, False, False, True, False, False, True, False, False, True, True, False, True, True, False, False, True, False, False, False, False, False, True, False, False]
In [31]: d=np.array(a[:-1])[c]
In [32]: print(d)
[ 4 16 18 20 22 22 23 23 29 32]
In [33]: result = list(set(d))
In [34]: result
Out[34]: [32, 4, 16, 18, 20, 22, 23, 29]

也可以用以下的方法比较出相邻元素是否相等,即求出上面的变量 c,然后再执行后面的步骤

In [35]: import operator
In [36]: import itertools
In [37]: c2=list(map(operator.eq, a, itertools.islice(a, 1, None)))
In [38]: print(c2)
[False, False, False, False, True, False, False, False, False, False, False, False, False, False, False, True, False, False, True, False, False, True, False, False, True, True, False, True, True, False, False, True, False, False, False, False, False, True, False, False]
In [39]: c==c2
Out[39]: True

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • python实现动态数组的示例代码

    python实现动态数组的示例代码

    这篇文章主要介绍了python实现动态数组的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-07-07
  • Python通过Socket手动实现HTTP协议

    Python通过Socket手动实现HTTP协议

    这篇文章主要为大家详细介绍了Python如何通过Socket手动实现HTTP协议,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一
    2024-03-03
  • django框架实现模板中获取request 的各种信息示例

    django框架实现模板中获取request 的各种信息示例

    这篇文章主要介绍了django框架实现模板中获取request 的各种信息,结合实例形式分析了Django框架模板直接获取request信息的相关配置与操作技巧,需要的朋友可以参考下
    2019-07-07
  • 安装python-docx后,无法在pycharm中导入的解决方案

    安装python-docx后,无法在pycharm中导入的解决方案

    这篇文章主要介绍了安装python-docx后,无法在pycharm中导入的解决方案,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-03-03
  • Python中isnumeric()方法的使用简介

    Python中isnumeric()方法的使用简介

    这篇文章主要介绍了Python中isnumeric()方法的使用,isnumeric()方法的使用是Python入门中的基础知识,需要的朋友可以参考下
    2015-05-05
  • 浅谈numpy中函数resize与reshape,ravel与flatten的区别

    浅谈numpy中函数resize与reshape,ravel与flatten的区别

    这篇文章主要介绍了浅谈numpy中函数resize与reshape,ravel与flatten的区别介绍,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-06-06
  • Python 利用OpenCV给照片换底色的示例代码

    Python 利用OpenCV给照片换底色的示例代码

    这篇文章主要介绍了Python 利用OpenCV给照片换底色,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-08-08
  • Python pandas数据合并merge函数用法详解

    Python pandas数据合并merge函数用法详解

    这篇文章主要给大家介绍了关于Python pandas数据合并merge函数用法的相关资料,数据分析中经常会遇到数据合并的基本问题,文中通过示例代码介绍的非常详细,需要的朋友可以参考下
    2023-07-07
  • 使用python opencv对畸变图像进行矫正的实现

    使用python opencv对畸变图像进行矫正的实现

    本文主要介绍了使用python opencv对畸变图像进行矫正的实现,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-05-05
  • 使用python绘制二维图形示例

    使用python绘制二维图形示例

    今天小编就为大家分享一篇使用python绘制二维图形示例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-11-11

最新评论