一: 直接遍历列表删除

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遍历的还是之前的索引长度,会导致索引超过范围而报错

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

'''
学习中遇到问题没人解答?小编创建了一个Python学习交流QQ群:725638078
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
'''
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)

六: 通过递归函数删除

'''
学习中遇到问题没人解答?小编创建了一个Python学习交流QQ群:725638078
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
'''
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:  # 直到最后,列表里的元素都是一个,运行了elsereturn lst
print(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基础入门教程推荐

Python爬虫案例教程

在Python列表中删除重复元素的几种方法,用起来真好用相关推荐

  1. 从Dart列表中删除重复项的2种方法

    本文向您展示了从 Flutter 中的列表中删除重复项的 2 种方法.第一个适用于原始数据类型列表.第二个稍微复杂一些,但适用于map****列表或对象列表. 转换为 Set 然后反转为 List 这 ...

  2. python从后面删除重复项_如何从Python列表中删除重复项

    如何从Python列表中删除重复项 了解如何从Python中的List中删除重复项技巧. 实例 从列表中删除任何重复项: mylist = ["a", "b", ...

  3. Java删除ArrayList中的重复元素的2种方法

    ArrayList是Java中最常用的集合类型之一.它允许灵活添加多个null元素,重复的元素,并保持元素的插入顺序.在编码时我们经常会遇到那种必须从已建成的ArrayList中删除重复元素的要求.这 ...

  4. 查找统计python列表中的重复元素

    如何快速的统计出那些是重复的呢? 形如aa=[1,2,2,3,2,4]的一个list,其中有重复元素,由于集合中重复元素无意义,所以 bb=list(set(aa))可很容易得到去除重复的列表[1,2 ...

  5. python统计列表中重复_查找统计python列表中的重复元素

    如何快速的统计出那些是重复的呢? 形如aa=[1,2,2,3,2,4]的一个list,其中有重复元素,由于集合中重复元素无意义,所以 bb=list(set(aa))可很容易得到去除重复的列表[1,2 ...

  6. 如何从 Python 列表中删除重复项

    def my_function(x):return list(dict.fromkeys(x))mylist = my_function(["a", "b", ...

  7. python删除列表中的重复值_如何从 Python 列表中删除重复项

    例子解释 创建一个以 List 作为参数的函数. 创建函数 def my_function(x): return list(dict.fromkeys(x)) mylist = my_function ...

  8. scala 去除重复元素_Scala程序从列表中删除重复项

    scala 去除重复元素 List in Scala is a collection that stores data in the form of a liked-list. The list is ...

  9. 如何在保留订单的同时从列表中删除重复项?

    是否有内置的程序在保留顺序的同时从Python列表中删除重复项? 我知道我可以使用集合来删除重复项,但这会破坏原始顺序. 我也知道我可以这样滚动自己: def uniq(input):output = ...

最新文章

  1. C++——智能指针——auto_ptr、shared_ptr、unique_ptr
  2. web直播方案总结:
  3. pytorch笔记: 处理inf和nan数值
  4. Java 编程的动态性,第 8 部分: 用代码生成取代反射--转载
  5. 详解预训练模型、图神经网络、模型压缩、知识图谱、信息抽取、序列模型、深度学习、语法分析、文本处理...
  6. Java 运算符及优先级
  7. 音视频应用驶入快车道 开发者如何快速追赶这波技术红利?
  8. Java学习笔记(基本数据类型和变量命名规则)
  9. 天正坐标标注显示不全_广联达导入CAD图纸不显示怎么办?
  10. 域渗透——Local Administrator Password Solution
  11. c#实现麻将胡牌判定-----对子法
  12. 实战接入腾讯云日志服务
  13. 上帝在逃亡,撒旦在流浪
  14. java学习之服务器第28天( --jsp--三个指令--六个动作标签--PageContext域--EL表达式--)
  15. Python中字符串的驻留机制和常用方法
  16. Java 使用Docx4j实现word文档Docx格式转Doc格式
  17. 有哪些设备管理软件值得推荐?
  18. PSRAM芯片QPI接口APS6404L专用于智能手表存储
  19. Primas与币乎,孰轻孰重
  20. 【C语言】Wave文件处理

热门文章

  1. 解决 'config.h' file not found。升级xcode 新版本导致旧的RN项目打开报错 解决方法。...
  2. 搭建一个简易的https
  3. Ubuntu 软件包管理APT
  4. Gartner:2016年全球IoT安全开支将达到3.48亿美元
  5. HUT-1556 网址
  6. PowerDesigner模型设计
  7. c#编写的MD5加密类
  8. 微信公众平台两种消息处理流程对比
  9. cx_sy_dyn_call_illegal_type
  10. EDITOR-CALL语句的使用:修改abap内表的内容(代码摘抄)