[python中对list去重的多种方法

怎么快速的对列表进行去重呢,去重之后原来的顺序会不会改变呢?

1.以下的几种情况结果是一样的,去重之后顺序会改变:

i = [1,2,3,3,4,2,3,4,5,6,1]

news_i= []

for id in i:

if id not in news_i:

news_i.append(id)

print news_i

或用set

i= [1,4,3,3,4,2,3,4,5,6,1]

i= list(set(ids))

或使用itertools.grouby

import itertools

i = [1,4,3,3,4,2,3,4,5,6,1]

i.sort()

it = itertools.groupby(i)

for k, g in it:

print k

In [5]: i = [1,4,3,3,4,2,3,4,5,6,1]

In [6]: func = lambda x,y:x if y in x else x + [y]

In [7]: reduce(func, [[], ] + i)

Out[7]: [1, 4, 3, 2, 5, 6]

其中的 lambda x,y:x if y in x else x + [y] 等价于 lambda x,y: y in x and x or x+[y] 。

思路其实就是先把i变为[[], 1,4,3,......] ,然后在利用reduce的特性.

去列表去重,不改变原来的顺序,还可以使用一个空列表把原列表里面不重复的数据"装起来",例如:

list2 = []

list1 = [1,2,3,2,2,2,4,6,5]

for i in list1:

if i not in list2:

list2.append(i)

list2

[1, 2, 3, 4, 6, 5]

或者使用删除元素索引的方法对列表去重,并且不改变原列表的顺序

# python for删除的时候会往前移(垃圾回收机制),未遍历到的后一个占了前一个被删除的"位置",导致这个数不会被遍历到,而使最后的结果错误

# 局部变量在栈内存中存在,当for循环语句结束,那么变量会及时被gc(垃圾回收器)及时的释放掉,不浪费空间;

# 如果使用循环之后还想去访问循环语句中控制那个变量,使用while循环。

# 所以使用while循环删除nums中的Val(的下标)

nums = [1,2,3,3,4,2,3,4,5,6,1]

val = 3

while val in nums:

nums.pop(nums.index(val))

print nums

return len(nums)

python集合去重_python集合去重相关推荐

  1. [转载] python创建集合set()_Python 集合set()

    参考链接: Python set集合 | difference 创建 # 创建空集合 set() # 创建集合,参数必须为 iterable set(it) set(dict) # 只取dict.ke ...

  2. python创建集合set()_Python 集合set

    可变集合set 集合set是Python中一种基本数据类型,它分为可变集合(set)和不可变集合(frozenset)两种.类似于其他语言,集合是一个无序不重复元素集,包括创建集合set.向集合中添加 ...

  3. python中集合运算_python集合运算

    广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! 每个韦恩(venn)图中的红色部分是给定集合运算得到的结果.? python 集 ...

  4. python集合运算符_Python 集合、字典、运算符

    先区分一下序列类型和散列类型: 序列类型:list.string.tuple,他们中的元素是有序的. 散列类型:set.dict,他们中的元素无序的.(注意:python3.7.0开始字典变成&quo ...

  5. python集合常用方法_Python 集合常用方法总结

    数据类型:int/str/bool/list/dict/tuple/float/set (set类型天生去重) 一.集合的定义 s = set() #定义空集合 s = {'a','b','c','d ...

  6. python集合类型_python集合类型介绍

    我们在学习数学的时候学过集合这个概念,在Python中同样存在一种名叫集合的数据类型,它也是用来保存不重复的元素,简单的说,集合就是包含了一些唯一存在的元素. 元素有以下几个特性: 1) 无序性,集合 ...

  7. python集合运算_Python 集合set()添加删除、交集、并集、集合操作详解

    在Python set是基本数据类型的一种集合类型,它有可变集合(set())和不可变集合(frozenset)两种.创建集合set.集合set添加.集合删除.交集.并集.差集的操作都是非常实用的方法 ...

  8. python集合用法_Python 集合(Set)

    集合 集合是无序.无索引的数据集.在Python中,集合用花括号包裹. 示例 创建集合: thisset = {"自行车", "汽车", "高铁&qu ...

  9. python的集合类型_python集合类型

    集合类型简介 集合也是容器,其内元素都是无序.唯一.不可变的.它常用来做成员测试.移除重复数据.数据计算(比如交集.并集.差集). 集合Set是dict的无value版.集合也使用大括号包围: > ...

最新文章

  1. linux中光标向上调一行命令,Linux vi 中移动光标 命令
  2. Altium Designer 18/AD 设置禁止布线层和铜皮或者其他线之间的间距
  3. eclipse svn不能忽略文件及文件夹,ignore设置无效 ?
  4. 菜鸟教程android布局,Android菜鸟级教程
  5. CVPR 2021 最佳论文!对抗神经网络GAN解决3D场景难题
  6. python list删除元素速度慢_python list(python list删除元素是要注意的坑点)
  7. 百度SDN实践与思考
  8. 汉王考勤管理系统使用教程
  9. 公众号网课答案查询系统
  10. ecilpse写html图片,eclipse怎么导入图片
  11. html touch时没有阴影,4399touch怎么玩 Touch游戏常见问题汇总
  12. 地下城堡游戏小脚本儿——自动炼金
  13. 怎样上android官方下载,【图文教程】如何安装 iOS/Android(安卓)触动精灵?
  14. bert系列第一篇: bert进行embedding
  15. class io.netty.util.internal.PlatformDependent0$6 cannot access class jdk.internal.misc.Unsafe
  16. 混淆利器proguard的用法
  17. windows下载安装opencv
  18. 计算机 医学 sci,医学、计算机与图像处理,免版面费的“研究生之友”SCI论文期刊...
  19. 5分钟带你了解python中超级好用的库 you-get
  20. 推荐一款免费又好用的报表工具

热门文章

  1. (vue基础试炼_07)Vue实例生命周期函数
  2. swiper轮播插件的使用
  3. 单一窗口关区备案_深圳跨境电商企业进出口备案,赶紧码下学习
  4. 如何用Java代码解析json
  5. eclipse把tomcant用到一个项目里_聊一个镜头工艺里容易被忽略,但很重要的项目...
  6. java写入数组_如何在Java中将数组写入outputStream
  7. kmeans python_k-means python实践
  8. collector list 多个分组_【S01E07】groupby方法、GroupBy对象、groupby方法的分组键
  9. php写好程序后需要嵌套,什么是PHP嵌套函数?
  10. html文件设置断点调试,断点调试