python 列表去重(数组)的几种方法_python 列表去重(数组)的几种方法
在抓取頁(yè)面圖片時(shí),為避免重復(fù)抓取,將抓取的img結(jié)果(結(jié)果集是list類(lèi)型的)通過(guò)集合去重。這里總結(jié)了下網(wǎng)上搜集到的幾種方法。
一、方法1
代碼如下
復(fù)制代碼
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
思路看起來(lái)比較清晰簡(jiǎn)單 ,也可以保持之前的排列順序。
二、方法2
通過(guò)set方法進(jìn)行處理
代碼如下
復(fù)制代碼
ids = [1,4,3,3,4,2,3,4,5,6,1]
ids = list(set(ids))
處理起來(lái)比較簡(jiǎn)單,使用了集合方法set進(jìn)行處理,不過(guò)結(jié)果不會(huì)保留之前的順序。
三、方法3
利用lambda匿名函數(shù)和 reduce 函數(shù)處理
代碼如下
復(fù)制代碼
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模塊
代碼如下
復(fù)制代碼
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
五、無(wú)法保持原有順序
代碼如下
復(fù)制代碼
liebiao=set(liebiao)
六、while遍歷去重
代碼如下
復(fù)制代碼
def delRepeat(liebiao):
for x in liebiao:
while liebiao.count(x)>1:
del liebiao[liebiao.index(x)]
return liebiao
七、例子
程序很簡(jiǎn)單,直接上代碼吧:
代碼如下
復(fù)制代碼
#coding=utf-8
def open_txt():? #打開(kāi)TXT文本寫(xiě)入數(shù)組
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():? #打開(kāi)TXT文本寫(xiě)入數(shù)組
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導(dǎo)入數(shù)組
#passlist = list(set(passlist))?? #python 列表去重
global? list_passwed? #列表去重,不打亂原來(lái)的順序
list_passwed=[]
for i in passlist:
if i not in list_passwed:
list_passwed.append(i)
write_txt()
aside# set方法可以直接去重而且還會(huì)排序,如果需要排序的話用set是最快的
總結(jié)
以上是生活随笔為你收集整理的python 列表去重(数组)的几种方法_python 列表去重(数组)的几种方法的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: python绘图内容怎么保存_将绘图保存
- 下一篇: 星外主机管理系统可以装到内网_智慧消防管