今天遇到一个问题,在同事随意的提示下,用了 itertools.groupby 这个函数。不过这个东西最终还是没用上。

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

直观方法最简单的思路就是:

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

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

用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)

使用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

您可能感兴趣的文章:Python3删除排序数组中重复项的方法分析Python实现删除排序数组中重复项的两种方法示例python中对list去重的多种方法python列表去重的二种方法Python对列表去重的多种方法(四种方法)Python对字符串实现去重操作的方法示例Python对多属性的重复数据去重实例Python numpy 点数组去重的实例Python 利用内置set函数对字符串和列表进行去重的方法Python3实现从排序数组中删除重复项算法分析

python中列表实现去重使用_Python对list列表结构中的值进行去重的方法总结相关推荐

  1. python中大于0怎么表示_python怎么筛选列表中大于0的数据?

    k17少儿编程网-Scratch_Python_教程_免费儿童编程学习平台 python筛选列表中大于0的数据的方法:k17少儿编程网-Scratch_Python_教程_免费儿童编程学习平台 1.使 ...

  2. python中排序英文单词怎么写_Python实现对文件进行单词划分并去重排序操作示例...

    本文实例讲述了Python实现对文件进行单词划分并去重排序操作.,具体如下: 文件名:test1.txt 文件内容: But soft what light through yonder window ...

  3. [转载] python中for语句用法_详解Python中for循环的使用_python

    参考链接: 在Python中将else条件语句与for循环一起使用 这篇文章主要介绍了Python中for循环的使用,来自于IBM官方网站技术文档,需要的朋友可以参考下 for 循环 本系列前面 &q ...

  4. python中for语句用法_详解Python中for循环的使用_python

    这篇文章主要介绍了Python中for循环的使用,来自于IBM官方网站技术文档,需要的朋友可以参考下 for 循环 本系列前面 "探索 Python,第 5 部分:用 Python 编程&q ...

  5. python中的array函数作用_Python中的Array | 数组2(简介和功能)

    相关文章:Python中的数组Array | 1(简介和功能) 以下是更多函数. 1. typecode:此函数返回初始化数组所用的数据类型. 2. itemsize:此函数返回单个数组元素的大小(以 ...

  6. python中数据类型不同运算不同_Python的基本数据类型与运算

    Python的基本数据类型: 1.number数字 整型(整数):python可以处理任意大小的整数包括正整数与负整数 浮点型(小数):在Python中表示浮点数的时候回存在一些误差 复数:a+bj ...

  7. 在python中创建一个具有特定大小的空列表

    本文翻译自:Create an empty list in python with certain size I want to create an empty list (or whatever i ...

  8. python中如何进行数据类型转换_python数据类型的强制转换

    首页 专栏 python 文章详情 0 python数据类型的强制转换 小小垂髫 发布于 1 月 21 日 数据类型的强制转换 如果要将一个数据转换成另一个数据类型,只需要将其放入相应类型的函数中去. ...

  9. python中turtle要安装吗_Python中下划线的5种含义你都知道吗?

    黑客技术 点击右侧关注,了解黑客的世界! Linux编程 点击右侧关注,免费入门到精通! 程序员严选 甄选正品好物,程序员生活指南! 本文介绍了Python中单下划线和双下划线("dunde ...

  10. python中choice()函数的参数_Python中choice函数如何实现?

    熟悉Python的小伙伴是知道Python是可以生成随机项的,python中choice函数是random模块的随即取样函数,它可以通过导入 random 模块,调用 random 静态对象生成Pyt ...

最新文章

  1. HTMD | 从PDB文件获取3D特征描述符
  2. Phpcms V9当前栏目及所有二级栏目下内容调用标签
  3. oracle 快照用途,Oracle快照原理及实现总结
  4. 快学好这个去给学妹修热水器
  5. 开环控制的两轮差速驱动小车_汽车的差速器、差速锁有什么不同?很多车主容易把它俩搞混...
  6. 计算机专业有没有3D打印,3D打印技术属于哪个专业_招生问答
  7. Android键盘删除键问题
  8. Steve Yegge:Google面试秘籍
  9. 【C++】输出公元1900-2100年之间所有闰年的年号,每5个一行
  10. 用Sniffer和ARP分析网络问题
  11. 2021互联网大厂端午礼盒大盘点~
  12. 小孔成像总结_初中物理150条知识点总结,非常珍贵!
  13. 西门子1200PLC的MODBUS_RTU轮询程序
  14. 【台大郭彦甫】Matlab入门教程超详细学习笔记二:基本操作与矩阵运算(附PPT链接)
  15. ffmpeg php 水平翻转,FFmpeg 视频画面旋转的命令详解及旋转失败的解决方法
  16. ajax的leiku,AJAX实现汉字和拼音搜索自动提示的效果(asp.net)
  17. 安卓USB绑定RNDIS驱动的详细安装教程
  18. Web服务(07)——LNMP一键部署
  19. 计算机科学编辑终审退稿,三审退稿信范文三审三校.doc
  20. 学习linux的好助手-linux命令解释工具

热门文章

  1. hdu Hike on a Graph
  2. jQuery源码分析系列(35) : Ajax - jsonp的实现与原理
  3. 域还原的三种模式,以及应用场景
  4. Citrix入门教程,之windows server2008 r2安装
  5. exawear能运行java_VirSCAN.org-多引擎在线病毒扫描网 v1.02,当前支持 47 款杀毒引擎...
  6. mapper的更多细节,日志配置、核心文件的配置等
  7. BIO、NIO、AIO的简单个人理解,同步异步和阻塞非阻塞的简单理解
  8. python实现逻辑回归牛顿法求参数_教程 | 如何通过牛顿法解决Logistic回归问题
  9. 小程序 params_08. 小程序项目实战:设置首页轮播图(3)
  10. java编程创建警告_java – 无法阻止ant生成编译器Sun专有API警告