golang大数据量切片去重方法
最近在计算一批数据余弦相似([golang余弦相似度]利用余弦模型计算两关键词相似度|http://www.zongk.com/zongk/135.html),之前一直在使用百度出来的去重方法,数据量较小时还行,数据量较多时发现时间非常慢。
百度出来的去重方法:
func Quchong(mylist []string) ([]string){
newlist := make([]string,0)
//tempmap := make(map[string]int)
for k,v := range mylist{
Isok := false
for i := k+1 ; i < len(mylist); i ++{
if v == mylist[i]{
Isok = true
break
}
}
if (Isok == false){
newlist = append(newlist,v)
}
}
return newlist
}
两次for循环费时间,golang里面有map集合数据结构,他和
python的字典很类似,键值都是唯一的,利用这个点,加个map速度快很多,新的数据去重方法:
//新去重方法
func New_quchong(mylist []string)([]string){
temp_map := make(map[string][]int)
res_list := make([]string,0)
for k,v := range mylist{
temp_map[v] = append(temp_map[v],k)
//fmt.Println(v,k)
}
for k,_ := range temp_map{
res_list = append(res_list,k)
}
return res_list
}
TAGS:golang , 大数据 , 切片 , 去重
来自Davids zhou博客原创文章请尊重作者:http://www.zongk.com/zongk/136.html转载请标注此链接