• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • vbs
  • DOS/BAT
  • hta/htc
  • python
  • perl
  • VBA
  • ColdFusion
  • ruby
  • PowerShell
  • Lua
  • Golang
  • linux shell
您的位置:首页 > 脚本语言 >python > Python对list列表结构中的值进行去重的方法总结

Python对list列表结构中的值进行去重的方法总结

作者:goldensun 字体:[增加 减小] 来源:互联网

goldensun 通过本文主要向大家介绍了python list 最大值,python list 最小值,python list中最大值,python list 平均值,python中list的用法等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

今天遇到一个问题,在同事随意的提示下,用了 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

</div>

这样也可行,但是看起来不够爽。
用set
另外一个解决方案就是用set:

ids = [1,4,3,3,4,2,3,4,5,6,1]
ids = list(set(ids))
</div>

这样的结果是没有保持原来的顺序。
按照索引再次排序
最后通过这种方式解决:

ids = [1,4,3,3,4,2,3,4,5,6,1]
news_ids = list(set(ids))
news_ids.sort(ids.index)
</div>

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

</div>

关于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]

</div>

上面是我在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

</div>

您可能想查找下面的文章:

  • Python对list列表结构中的值进行去重的方法总结
  • Python中用max()方法求最大值的介绍
  • python使用分治法实现求解最大值的方法

相关文章

  • Python Requests安装与简单运用
  • 学习python处理python编码问题
  • python提取内容关键词的方法
  • Python中使用Tkinter模块创建GUI程序实例
  • python3读取MySQL-Front的MYSQL密码
  • 跟老齐学Python之大话题小函数(1)
  • python 中文乱码问题深入分析
  • python完成FizzBuzzWhizz问题(拉勾网面试题)示例
  • Python中的字典遍历备忘
  • Python写入CSV文件的方法

文章分类

  • vbs
  • DOS/BAT
  • hta/htc
  • python
  • perl
  • VBA
  • ColdFusion
  • ruby
  • PowerShell
  • Lua
  • Golang
  • linux shell

最近更新的内容

    • python通过apply使用元祖和列表调用函数实例
    • 一个计算身份证号码校验位的Python小程序
    • Python时间的精准正则匹配方法分析
    • 使用Python编写Linux系统守护进程实例
    • python 正则表达式 概述及常用字符
    • 400多行Python代码实现了一个FTP服务器
    • 一篇文章入门Python生态系统(Python新手入门指导)
    • Python中函数的参数传递与可变长参数介绍
    • Python爬虫代理IP池实现方法
    • Linux上安装Python的PIL和Pillow库处理图片的实例教程

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有