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

作者: cuzz_ | 来源:发表于2018-02-28 13:44 被阅读9次
    image.png

    过滤列表中的负数

    对于列表我们最通用的方法就是迭代

    data = [3, 9, -1, 10, 20, -2, 0]
    
    res = []
    for x in data:
        if x >= 0:
            res.append(x)
    
    print(res)
    

    我们还可以通过filter(function, iterable)函数

    filter() 函数用于过滤序列,过滤掉不符合条件的元素,返回由符合条件元素组成的新列表。
    该接收两个参数,第一个为函数,第二个为序列,序列的每个元素作为参数传递给函数进行判,然后返回 True 或 False,最后将返回 True 的元素放到新列表中。

    from random import randint
    
    # randint中-10和10都包括, 如果不需要x可以用下划线表示
    data = [randint(-10, 10) for _ in range(10)]
    data1 = filter(lambda x: x >= 0, data)
    
    print(list(data1))
    

    我们还可以用列表解析

    data1 = [x for x in data if x >= 0]
    
    print(list(data1))
    

    使用timeit测试发现列表解析比filter快一倍,所以我们首选列表解析

    字典筛选

    筛选出分数大于等于90分的学生

    from random import randint
    # 随机生成一个学号从1-20学生的分数
    d = {x: randint(60, 100) for x in range(1, 21)}
    
    d1 = {key: value for key, value in d.items() if value >= 90}
    
    print(d1)
    

    集合筛选

    筛选出集合中能被3整除的数

    from random import randint
    
    data = [randint(-10, 10) for _ in range(10)]
    s = set(data)
    s1 = {for x in s if x % 3 == 0}
    
    print(s1)
    

    相关文章

      网友评论

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

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