文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

Python删除列表中重复元素的方法有哪些

2023-07-05 19:46

关注

这篇文章主要介绍了Python删除列表中重复元素的方法有哪些的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Python删除列表中重复元素的方法有哪些文章都会有所收获,下面我们一起来看看吧。

直接遍历列表删除

l1 = [1, 1, 2, 2, 3, 3, 3, 3, 6, 6, 5, 5, 2, 2]for el in l1:    if l1.count(el) > 1:        l1.remove(el)print(l1)# 会漏删,因为删除一个元素后,后面的元素向前补位,导致紧跟的一个元素被跳过.

通过遍历索引删除

l1 = [1, 1, 2, 2, 3, 3, 3, 3, 6, 6, 5, 5, 2, 2]for el in range(len(l1)):  # 此时len(l1)已经确定,不会随着l1后面的变化而变化    if l1.count(l1[el]) > 1:        l1.remove(l1[el])print(l1)  # 会报错,因为删除元素后导致l1的长度变短了,但是for遍历的还是之前的索引长度,会导致索引超过范围而报错

通过遍历创建的切片来删除原列表

l1 = [1, 1, 2, 2, 3, 3, 3, 3, 6, 6, 5, 5, 2, 2]for el in l1[:]:    if l1.count(el) > 1:        l1.remove(el) # 没有问题,可以去重,但是无法保留原有的顺序print(l1)

用新列表记录需要保留的元素

l1 = [1, 1, 2, 2, 3, 3, 3, 3, 6, 6, 5, 5, 2, 2]lst = []for el in l1:    if lst.count(el) < 1:        lst.append(el)print(lst)   # 没有问题,也能保留原有顺序,但是创建了新列表

通过索引倒着删除

l1 = [1, 1, 2, 2, 3, 3, 3, 3, 6, 6, 5, 5, 2, 2]for el in range(len(l1)-1, -1, -1):    if l1.count(l1[el]) > 1:        l1.pop(el)  # 没有问题,且保留原顺序        # l1.remove(l1[el]) # 没有问题,但是不能保留原有顺序        # del l1[el] # 这样则会保留原有顺序,小伙伴可以想一想为什么print(l1)

通过递归函数删除

l1 = [1, 1, 2, 2, 3, 3, 3, 3, 6, 6, 5, 5, 2, 2]def set_lst(lst):    for el in lst:        if lst.count(el) > 1:            lst.remove(el)            set_lst(lst)    # 每次开辟一个新函数,判断上次被删除了一个元素后的列表    else:  # 直到最后,列表里的元素都是一个,运行了else        return lstprint(set_lst(l1))  # 因为是从前面开始删除的,所以不保留原有顺序'''[1, 1, 2, 2, 3, 3, 3, 3, 6, 6, 5, 5, 2, 2][1, 2, 2, 3, 3, 3, 3, 6, 6, 5, 5, 2, 2][1, 2, 3, 3, 3, 3, 6, 6, 5, 5, 2, 2][1, 3, 3, 3, 3, 6, 6, 5, 5, 2, 2][1, 3, 3, 3, 6, 6, 5, 5, 2, 2][1, 3, 3, 6, 6, 5, 5, 2, 2][1, 3, 6, 6, 5, 5, 2, 2][1, 3, 6, 5, 5, 2, 2][1, 3, 6, 5, 2, 2][1, 3, 6, 5, 2]   return lst = [1, 3, 6, 5, 2]'''

毫无疑问set()是最方便的

l1 = [1, 1, 2, 2, 3, 3, 3, 3, 6, 6, 5, 5, 2, 2]lst = list(set(l1))print(lst)

关于“Python删除列表中重复元素的方法有哪些”这篇文章的内容就介绍到这里,感谢各位的阅读!相信大家对“Python删除列表中重复元素的方法有哪些”知识都有一定的了解,大家如果还想学习更多知识,欢迎关注编程网行业资讯频道。

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     801人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     348人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     311人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     432人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     220人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯