python 列表去重(数组)的几种方法

    python 列表就是我们js中的数组了,我们下文整理几个常用的python 列表去重实现方法,非常的简单好用。
     在抓取页面图片时,为避免重复抓取,将抓取的img结果(结果集是list类型的)通过集合去重。这里总结了下网上搜集到的几种方法。

一、方法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方法进行处理

ids = [1,4,3,3,4,2,3,4,5,6,1]
ids = list(set(ids))

处理起来比较简单,使用了集合方法set进行处理,不过结果不会保留之前的顺序。

三、方法3

利用lambda匿名函数和 reduce 函数处理

ids = [1,4,3,3,4,2,3,4,5,6,1]
func = lambda x,y:x if y in x else x + [y]
reduce(func, [[], ] + ids)

四、方法4

使用itertools模块

import itertools
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

五、无法保持原有顺序

liebiao=set(liebiao)


六、while遍历去重

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

七、例子

程序很简单,直接上代码吧:

#coding=utf-8
          
def open_txt():  #打开TXT文本写入数组
    try:
        xxx = file(r'C:\Users\Administrator\Desktop\user.txt', 'r')
        for xxx_line in xxx.readlines():
            passlist.append(xxx_line)
        xxx.close()
    except:
        return 0
          
def write_txt():  #打开TXT文本写入数组
    try:
        yyy = file(r'C:\Users\Administrator\Desktop\list_user.txt', 'w')
        for i in list_passwed:
            yyy.write(i)
        yyy.close()
    except:
        return 0
          
          
global  passlist  #声明全局变量
passlist = []    #用户名:anonymous 密码为空
open_txt()   #TXT导入数组
#passlist = list(set(passlist))   #python 列表去重
global  list_passwed  #列表去重,不打乱原来的顺序
list_passwed=[]
for i in passlist:
    if i not in list_passwed:
        list_passwed.append(i)
write_txt()<span style="font-family: Simsun; background-color: rgb(255, 255, 255);"> </span>

aside# set方法可以直接去重而且还会排序,如果需要排序的话用set是最快的

转载:python 列表去重(数组)的几种方法


  • 3
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值