时间:2021-05-22
今天遇到一个问题,在同事随意的提示下,用了 itertools.groupby 这个函数。不过这个东西最终还是没用上。
问题就是对一个list中的新闻id进行去重,去重之后要保证顺序不变。
直观方法
最简单的思路就是:
这样也可行,但是看起来不够爽。
用set
另外一个解决方案就是用set:
这样的结果是没有保持原来的顺序。
按照索引再次排序
最后通过这种方式解决:
使用itertools.grouby
文章一开始就提到itertools.grouby, 如果不考虑列表顺序的话可用这个:
关于itertools.groupby的原理可以看这里:http://docs.python.org/2/library/itertools.html#itertools.groupby
用reduce
网友reatlk留言给了另外的解决方案。我补充并解释到这里:
上面是我在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
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
无聊统计了下列表去重到底有多少种方法。下面小编给大家总结一下,具体内容详情如下;开发中对数组、列表去重是非常常见的需求,对一个list中的id进行去重,有下面几
python中可以使用下标索引来访问列表中的值,对列表进行切片即截取,也可以对列表的数据项进行修改或更新。使用下标索引来访问列表中的值,例如list1[1]。使
Python3中sort方法是列表类型list的内置方法,使用sort方法对list排序会修改list本身,不会返回新的list。sort方法只能用于列表,不能
python中调用字典中key的方法:使用list()方法将字典中的keys转化为列表,然后通过列表索引值值即可调用指定的key。#-*-coding:utf-
python列表元素去重后如何保持原来的顺序不变原列表:list1=[1,2,1,4,9,3,5,2,6,7,3,1,6,8,4,0]去重,使用集合set来去重