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中time和datetime的区别与用法

    关于python中time和datetime的区别与用法

    这篇文章主要介绍了关于python中time和datetime的区别与用法,Python中封装了很多实用的函数,那么关于时间的函数time和datetime有什么区别和作用,让我们来看看吧
    2023-03-03
  • 利用Python语言的grpc实现消息传送详解

    利用Python语言的grpc实现消息传送详解

    gRPC是一个高性能、通用的开源RPC框架,其由Google主要面向移动应用开发并基于HTTP/2协议标准而设计。本文主要介绍了如何利用Python语言的grpc实现消息传送,感兴趣的可以了解一下
    2023-03-03
  • Tensorflow实现酸奶销量预测分析

    Tensorflow实现酸奶销量预测分析

    这篇文章主要为大家详细介绍了Tensorflow酸奶销量预测分析,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-07-07
  • Python 如何截取字符函数

    Python 如何截取字符函数

    这篇文章主要介绍了Python 如何截取字符函数,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-11-11
  • PyTorch实现联邦学习的基本算法FedAvg

    PyTorch实现联邦学习的基本算法FedAvg

    这篇文章主要为大家介绍了PyTorch实现联邦学习的基本算法FedAvg,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-05-05
  • JSON Web Tokens的实现原理

    JSON Web Tokens的实现原理

    本文主要介绍了JSON Web Tokens的实现原理。具有很好的参考价值,下面跟着小编一起来看下吧
    2017-04-04
  • Python工厂模式实现封装Webhook群聊机器人详解

    Python工厂模式实现封装Webhook群聊机器人详解

    企业存在给 特定群组 自动推送消息的需求,你可以在群聊中添加一个自定义机器人,通过服务端调用 webhook 地址,即可将外部系统的通知消息即时推送到群聊中。本文就来和大家聊聊具体实现方法
    2023-02-02
  • Python中应用protobuf的示例详解

    Python中应用protobuf的示例详解

    这篇文章主要来和大家聊一聊 protobuf,它是一个数据序列化和反序列化协议,因此它和 json 的定位是一样的。文中的示例代码讲解详细,感兴趣的可以了解一下
    2023-02-02
  • Python Socket编程详细介绍

    Python Socket编程详细介绍

    这篇文章主要介绍了Python Socket编程详细介绍,socket可以建立连接,传递数据,具有一定的参考价值,感兴趣的小伙伴们可以参考一下。
    2017-03-03
  • Python编写车票订购系统 Python实现快递收费系统

    Python编写车票订购系统 Python实现快递收费系统

    这篇文章主要为大家详细介绍了Python编写车票订购系统,Python实现快递收费系统,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-08-08

最新评论