zoukankan      html  css  js  c++  java
  • 列表去重、去除满足一定条件的元素

    列表去重(保持原来的顺序)

    from functools import reduce
    
    list1 = [1,4,3,3,4,2,3,4,5,6,1]
    # func = lambda x,y:x if y in x else x + [y]
    list2=reduce(lambda x,y:x if y in x else x + [y], [[], ] + list1)
    print(list2)
    print(list1)
    

      

    reduce中都发生了什么?

    答:

    reduce中有2个参数,

    参数一为一个匿名函数:lambda x,y:x if y in x else x + [y]

    参数二为一个可迭代的列表:[[], 1, 4, 3, 3, 4, 2, 3, 4, 5, 6, 1]

    lambda函数的解释:[ [], a1, a2, a1, a4]

    第一次:x为[],y为a1。如果y在x中已经出现了,那么返回x。否则返回x+[y],即为把y放到x中去。

    第二次:x为[a1],即为上次返回的结果,y为a2。如果y在x中已经出现了,那么返回x。否则返回x+[y],即为把y放到x中去。

    第三次:x为[a1, a2],即为上次返回的结果,y为a1。如果y在x中已经出现了,那么返回x。否则返回x+[y],即为把y放到x中去。

    第四次:x为[a1, a2],即为上次返回的结果,y为a4。依据以上规则,最终返回[a1, a2, a4]。

    reduce对同一个列表有a1,a2,...,an迭代使用的功能。

    reduce()函数的解释:

    reduce(function, iterable[, initializer])
    function -- 函数,有两个参数
    iterable -- 可迭代对象
    initializer -- 可选,初始参数
    返回函数计算结果。

     举例说明:

    >>>def add(x, y) : # 两数相加
    ... return x + y
    ...
    >>> reduce(add, [1,2,3,4,5]) # 计算列表和:1+2+3+4+5
    15
    >>> reduce(lambda x, y: x+y, [1,2,3,4,5]) # 使用 lambda 匿名函数
    15

    reduce() 参考:

    https://www.runoob.com/python/python-func-reduce.html

    https://www.cnblogs.com/lincappu/p/8148851.html

    其他方法:

    https://www.cnblogs.com/zknublx/p/6042295.html

    map()、filter()、reduce()

     https://www.cnblogs.com/mxp-neu/articles/5316557.html

    列表去除元素长度小于等于1的元素

    a = ['what', '1', 'a', 'some', 'b', 'time']
    a = [i for i in a if len(i) > 1]
    print(a)
    

      

    输出

    ['what', 'some', 'time']

  • 相关阅读:
    Qt 智能指针学习(7种指针)
    Springmvc+Spring+Hibernate搭建方法
    DDD分层架构之领域实体(基础篇)
    LeetCode
    RabbitMQ
    Cocos2d-x环境搭建
    使用快捷键提升C#开发效率
    C# 6.0
    avalonjs 1.3.7发布
    VS2015安装
  • 原文地址:https://www.cnblogs.com/andy9468/p/8609035.html
Copyright © 2011-2022 走看看