python列表如何去除重复元素?

例子,python列表去重复。

复制代码代码示例:

#第一种def delRepeat(liebiao): for x in liebiao:  while liebiao.count(x)>1:   del liebiao[liebiao.index(x)] return liebiao

#第二种 无法保持原有顺序liebiao=set(liebiao)

python去除列表中的重复元素比较容易记忆的是用内置的set

l1 = ['b','c','d','b','c','a','a']

l2 = list(set(l1))

print l2

还有一种据说速度更快的,没测试过两者的速度差别

l1 = ['b','c','d','b','c','a','a']

l2 = {}.fromkeys(l1).keys()

print l2

这两种都有个缺点,祛除重复元素后排序变了:

['a', 'c', 'b', 'd']

如果想要保持原来的排序:

用list类的sort方法

l1 = ['b','c','d','b','c','a','a']

l2 = list(set(l1))

l2.sort(key=l1.index)

print l2

也可以这样写

l1 = ['b','c','d','b','c','a','a']

l2 = sorted(set(l1),key=l1.index)

print l2

也可以用遍历

l1 = ['b','c','d','b','c','a','a']

l2 = []

for i in l1:

if not i in l2:

l2.append(i)

print l2

上面的代码也可以这样写

l1 = ['b','c','d','b','c','a','a']

l2 = []

[l2.append(i) for i in l1 if not i in l2]

print l2

这样就可以保证排序不变了:

['b', 'c', 'd', 'a']

python列表list去除重复元素的方法python list去重的方法,需要用到 itertools.groupby 函数。

问题就是对一个list中的新闻id进行去重,去重之后要保证顺序不变。

1,直观方法,也是最简单的方法

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

news_ids = []

for id in ids:

if id not in news_ids:

news_ids.append(id)

print news_ids

这样也可行,但是看起来不够爽。

2,用set

另外一个解决方案就是用set:

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

ids = list(set(ids))

这样的结果是没有保持原来的顺序。

按照索引再次排序

最后通过这种方式解决:

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

news_ids = list(set(ids))

news_ids.sort(ids.index)

3,使用itertools.grouby

文章一开始就提到itertools.grouby, 如果不考虑列表顺序的话可用这个:

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

ids.sort()

it = itertools.groupby(ids)

for k, g in it:

print k

关于itertools.groupby的原理可以看这里:http://docs.python.org/2/library/itertools.html#itertools.groupby

补充:用reduce

网友reatlk留言给了另外的解决方案:

In [5]: ids = [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, [[], ] + ids)

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

以上是在ipython中运行的代码,其中的 lambda x,y:x if y in x else x + [y] 等价于 lambda x,y: y in x and x or x+[y] 。

先把ids变为[[], 1,4,3,......] ,然后利用reduce的特性。

reduce解释,参考链接:http://docs.python.org/2/library/functions.html#reduce

python列表如何去除重复_python列表如何去除重复元素(转自先锋教程网)相关推荐

  1. python中的列表分片详解_python列表与元组详解实例

    在这章中引入了数据结构的概念.数据结构是通过某种方式组织在一起的数据元素的集合.在python中,最基本的数据结构就是序列.序列中的每个元素被分配一个序号,即元素的位置,也被称为索引.注意:第一个索引 ...

  2. python列表有哪些操作_python列表的基本操作有哪些

    python列表的基本操作有:1.创建列表,只要把逗号分隔的不同的数据项使用方括号括起来:2.添加新的元素:3.遍历列表:4.访问列表中的值:5.从list删除元素. 相关免费学习推荐:python教 ...

  3. python列表字典元祖_python列表,字典,元组常用方法和集合

    python 一.列表 列表格式 变量=[元素1,元素2,元素3......] 1.添加 列表取数(按照下标取,下标从0开始) 获取长度 append添加(直接添加) extend添加(分别添加) i ...

  4. python中append的用法_Python 列表 append() 使用方法及示例

    Python 列表 append() 使用方法及示例 append()方法将一个项目添加到列表的末尾. append()方法将单个项目添加到列表的末尾. append()方法的语法为:list.app ...

  5. python列表的实现原理_Python列表对象实现原理

    Python 列表对象实现原理 Python 中的列表基于 PyListObject 实现,列表支持元 素的插入.删除.更新操作,因此 PyListObject 是一个变长 对象(列表的长度随着元素的 ...

  6. python列表操作函数大全_Python列表操作函数

    列表可以进行多个数据的存储,同时python中的列表设计非常到位,它可以实现内容动态扩充,可以进行后期数据的删除,这些就需要通过Python提供的列表操作函数来实现了. 对于Python语言而言,开发 ...

  7. python列表解析式如何使用_python列表推导式操作解析

    python列表推导式操作解析 这篇文章主要介绍了python列表推导式操作解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 基本格式 ​[表达式 ...

  8. python列表的实现原理_python列表推导式原理和使用方法

    偶尔会在python中看见这样一行代码: data = [x**2 for x in range(0, 5)] # 此时data = [0, 1, 4, 9, 16] 如果不知道背后的语法规则,那么很 ...

  9. python列表解析式如何使用_python列表解析式,生成器,及部分内建函数使用方法...

    标准库datetime 需要导入datetime模块: import datetime datetime模块: 对日期,时间,时间戳的处理 datetime的类方法 today  () now(tz= ...

最新文章

  1. matlab程序和程序文件
  2. BOI 2003 Problem. Spaceship
  3. [Java基础]Lambda表达式的格式与使用前提
  4. 23装饰模式(Decorator Pattern)
  5. 智慧交通day02-车流量检测实现06:目标估计模型-卡尔曼滤波(汇总)
  6. JetBrains IDE 调试快捷键(debug、全)
  7. jQuery实现的向下推送图文信息滚动效果
  8. c++primer 第2章 练习题答案 (尚未完善 陆续补充中 基本上已经完成)
  9. 想买楼下邻居的那套房,彼此熟悉,这种情况还用找中介付中介费吗?
  10. 家里的活一般是都帮不上忙
  11. 第一章 计算机网络参考模型
  12. [转帖]到底什么是时间复杂度
  13. 继承接口Java多线程(二)、启动一个线程的3种方式
  14. x64驱动遍历 DPC 定时器
  15. 第一次:《三国志2017》游戏纯玩体验及总结
  16. 计算机图形图像项目教程素材,计算机图形图像应用教程
  17. 计算机组成与原理第二章,计算机组成原理《第二章》
  18. 企业大数据价值你只发掘了1%!
  19. 繁簡替互換(SQL)
  20. MATLAB|创建指定行列大小行向量/零矩阵/单位阵含测试用例

热门文章

  1. nginx配置与应用
  2. python下划线_python 五种下划线含义
  3. 凤凰系统 android 分辨率,凤凰os支持的分辨率 | 手游网游页游攻略大全
  4. python时间索引_python+dataframe + 时间索引
  5. 【转】Word样式库模板管理(从样式库中永久删除样式)
  6. 检查python版本命令是_检查Python版本
  7. 什么是Flex弹性布局
  8. 使用最新PyPy代替CPython,加速Python执行
  9. Linux系统时间 time.h 之 函数gmtime使用
  10. gis插入的文本怎么搞成两行_word中关于文本框的使用方法大全