python 列表去重(數組)的幾種方法

來源:互聯網
上載者:User

在抓取頁面圖片時,為避免重複抓取,將抓取的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()

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

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.