美文网首页
如何在列表,字典,集合中根据条件筛选数据

如何在列表,字典,集合中根据条件筛选数据

作者: Diolog | 来源:发表于2019-02-07 12:54 被阅读0次

    统一使用python3.4以上版本

    实际案例:

    • 过滤列表[3,9,-1,10,-20,-2...]中的负数
    • 筛出字典{'LiLei':79,'Jim':88,'Lucy':92...}中值高于90的项
    • 筛出集合{77,89,32,20...}中能被3整除的元素

    List:

    首先生成随机的列表:

    from random import randint
    data = [randint(-10,10) for _ in range(10)]
    

    普通做法1:

    list_result = list()
    for _ in data:
      if _ >= 0:
        list_result.append(_)
    

    做法2:filter函数

    list(filter(lambda x:x>=0,data))
    

    做法3:列表解析

    [x for x in data if x>=0]
    

    时间比较:

    from timeit import timeit
    timeit('list(filter(lambda x:x>=0,{0}))'.format(data))
    执行时间:
    1.0598646074734006
    
    timeit('[x for x in {0} if x>=0]'.format(data))
    执行时间:
    0.34205928907095995
    

    列表解析更快一些,首选的方式是列表解析。而后两种方式都远快于第一种迭代的方案。

    Dict

    随机创建班级分数

    data = {i:randint(60,100) for i in range(1,21)}
    

    做法:字典解析

    {k:v for k,v in data.items() if v>90}
    
    注:
    Python3.5中:iteritems变为items
    

    Set

    随机生成集合

    data = {randint(-10,10) for _ in range(10)}
    

    集合解析:

    {x for x in data if x % 3 == 0}
    

    相关文章

      网友评论

          本文标题:如何在列表,字典,集合中根据条件筛选数据

          本文链接:https://www.haomeiwen.com/subject/ljbwsqtx.html