Python list去重且保持原顺序不变的方法

 更新时间:2021年04月02日 16:59:35   作者:RaXianch  
这篇文章主要介绍了Python list去重且保持原顺序不变的方法,帮助大家更好的理解和学习使用python,感兴趣的朋友可以了解下

背景

python 去重一顿操作猛如虎,set list 扒拉下去,就去重了,但是顺序就打乱了。如果对顺序没有需要的话,这样确实没有什么所谓。
但是如果需要保留顺序的话,就需要一点小小的改变。

code && demo

list 去重,顺序乱掉

# normal 写法
l1 = ['b','c','d','b','c','a','a']
l2 = list(set(l1))
print(l2)

# plus 写法
l1 = ['b','c','d','b','c','a','a']
l2 = {}.fromkeys(l1).keys()


去重后还是原 list 顺序

# normal 写法
l1 = ['b','c','d','b','c','a','a']
l2 = list(set(l1))
l2.sort(key=l1.index)

# plus 写法
l1 = ['b','c','d','b','c','a','a']
l2 = sorted(set(l1),key=l1.index)

写循环代码实现

# normal 写法
l1 = ['b','c','d','b','c','a','a']
l2 = []
for i in l1:
  if not i in l2:
    l2.append(i)
    
# plus 写法

l1 = ['b','c','d','b','c','a','a']
l2 = []
[l2.append(i) for i in l1 if not i in l2]

写 while 循环代码实现

L = [3, 1, 2, 1, 3, 4]
T = L[:]
for i in L:
  while T.count(i) > 1:
    del T[T.index(i)]
T.sort(key=L.index)

lambda 写法

备注:

  • ambda L,i: L if i in L else L + [i]    # 如果元素在列表中,那么返回列表本身,不在的话 L + [i]
  • [[],] + L # 等价于 [[], L],方便后面计算

总结

如果纠结空间复杂度的,用 python 干啥?
先谈能不能完成,再谈优化吧。

以上就是Python list去重且保持原顺序不变的方法的详细内容,更多关于Python list去重的资料请关注脚本之家其它相关文章!

相关文章

  • python Dijkstra算法实现最短路径问题的方法

    python Dijkstra算法实现最短路径问题的方法

    这篇文章主要介绍了python Dijkstra算法实现最短路径问题的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-09-09
  • Python解决IndexError: list index out of range问题的三种方法

    Python解决IndexError: list index out of&nb

    IndexError是一种常见的异常类型,它通常发生在尝试访问列表(list)中不存在的索引时,错误信息“IndexError: list index out of range”意味着你试图访问的列表索引超出了列表的实际范围,所以本文给大家介绍了Python成功解决IndexError: list index out of range
    2024-05-05
  • Python+wxPython实现文件名批量处理

    Python+wxPython实现文件名批量处理

    在日常的文件管理中,我们经常需要对文件进行批量处理以符合特定的命名规则或需求,本文主要介绍了如何使用wxPython进行文件夹中文件名的批量处理,需要的可以参考下
    2024-04-04
  • 解决Python中定时任务线程无法自动退出的问题

    解决Python中定时任务线程无法自动退出的问题

    今天小编就为大家分享一篇解决Python中定时任务线程无法自动退出的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-02-02
  • pytorch打印网络结构的实例

    pytorch打印网络结构的实例

    今天小编就为大家分享一篇pytorch打印网络结构的实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-08-08
  • Python根据区号生成手机号码的方法

    Python根据区号生成手机号码的方法

    这篇文章主要介绍了Python根据区号生成手机号码的方法,涉及Python随机数与字符串的相关操作技巧,需要的朋友可以参考下
    2015-07-07
  • Python字节码与程序执行过程详解

    Python字节码与程序执行过程详解

    这篇文章主要为大家介绍了Python字节码与程序执行过程详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-05-05
  • python简单利用字典破解zip文件口令

    python简单利用字典破解zip文件口令

    这篇文章主要给大家介绍了关于python简单利用字典破解zip文件口令的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-09-09
  • Pytorch Conda环境pack打包迁移报错的处理方案

    Pytorch Conda环境pack打包迁移报错的处理方案

    这篇文章主要介绍了Pytorch Conda环境pack打包迁移报错的处理方案,文中通过代码示例和图文结合的方式给大家介绍的非常详细,对大家的学习或工作有一定的帮助,需要的朋友可以参考下
    2024-07-07
  • Python中图像算术运算的示例详解

    Python中图像算术运算的示例详解

    还记得你在小学时学习如何加减数字吗?现在,你也可以对图像做同样的事情!输入图像可以进行算术运算,例如加法、减法和按位运算(AND、OR、NOT、XOR)。这些操作可以帮助提高输入照片的质量。本文将详解一下这些运算,需要的可以参考一下
    2022-05-05

最新评论