列表去重复

列表去重复有以下几种方法:

# *-*coding:utf-8 *-*
# Auth: wangxz
from functools import reduce
import itertools

nums = [1,3,4,53,2,21,4,4,3,-1]

def first(nums):   #原列表中的顺序不会改变
    mid_list = []
    for i in nums:
        if i not in mid_list:
            mid_list.append(i)

    print(mid_list)


def secnd(nums):     # 直接使用set处理,不过却不能保证顺序
    print(set(nums))


def third(nums):    # 注意python3中reduce函数需要导入from functools import reduce
    func = lambda x, y: x if y in x else x + [y]
    print(reduce(func, [[], ] + nums))


def fourth(nums):
    nums.sort()
    it = itertools.groupby(nums)
    for k, g in it:
        print(k)

fourth(nums)


reducer函数详解

reduce() 函数会对参数序列中元素进行累积。

函数将一个数据集合(链表,元组等)中的所有数据进行下列操作:用传给 reduce 中的函数 function(有两个参数)先对集合中的第 1、2 个元素进行操作,得到的结果再与第三个数据用 function 函数运算,最后得到一个结果。

语法结构如下:

reduce(function, iterable[, initializer])

参数说明:
    function: 函数名
    iterable: 可迭代对象,列表,集合等
实例应用:
    
计算1~100的加法和:
func = lambda x, y : x + y
reduce(func, range(100))

注意在python3.x中使用reduce函数,需要先导入:from functools import reduce

原文地址:https://www.cnblogs.com/wxzhe/p/9198123.html