list去重

来源:互联网 发布:m328晶体管测试仪编程 编辑:程序博客网 时间:2024/05/16 04:02

去除list中重复的元素

a = [1,2,3,4,5,6,7,2,1,3,5,6,7,8]

方法一:enumerate()

a = [item for index,item in enumerate(a) if index==a.index(item)][1,2,3,4,5,6,7,8]
注:Python的内置函数 enumerate(index,item,索引起始值)
统计文件的行数:
count = -1for index,item in enumerate(open(filename,'r'))    count += 1

方法二:for循环

new_list = []for i in a:    if i not in new_list:        new_list.append(i)print(new_list)

方法三:set()

new_list = list(set(a))

方法四:lambda reduce()

func = lambda x,y:x if y in x else x+[y]reduce(func,[[],]+a)

方法五:itertools模块

import itertoolsa = [1,2,3,4,5,6,7,2,1,3,5,6,7,8]a.sort()new_group = itertools.groupby(a)for index,item in new_group:    print(index)

方法六:函数

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

方法七:快速排序

如下,只需要把集合修改为单值元素
import randoma = [1,2,3,4,5,6,7,2,1,3,5,6,7,8]def qsort(a):    if len(a)<2:return a    pivot_element = random.choice(a)    small = [i for i in a if i ==pivot_elelment]    large = [i for in in a if i>pivot_element]    return qsort(small)+[pivot_element]+qsort(large)print(qsort(a))

方法八:fromkeys()

new_list = {}.fromkeys(a).keys()print new_list