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

实际案例

  1. 过滤掉列表[3,9,-1,10,20,-2…]中的负数

  2. 筛选字典{‘LiLei’:79,’Jim’:88,’Lucy’:92…}中值高于90的项

  3. 筛选集合{77,89,32,20…}中能被3整除的元素

对于以上问题,通常做法是通过迭代循环解决。比如问题1解决代码如下:

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

在列表中根据条件筛选数据

  • filter函数

  • 列表解析

    一.filter() 函数用于过滤序列,过滤掉不符合条件的元素,返回由符合条件元素组成的新列表。

    该函数接收两个参数,第一个为函数,第二个为序列,序列的每个元素作为参数传递给函数进行判,然后返回 True 或 False,最后将返回 True 的元素放到新列表中。

    1
    2
    3
    4
    5
    from random import randint
    data = [randint(-10, 10) for _ in range(10)]
    print(data)
    res = filter(lambda x: x >= 0, data)
    print(res)

    注:lambda函数是匿名函数

    二.列表解析

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

在字典中根据条件筛选数据

1
2
3
4
5
from random import randint
d = {x: randint(60, 100) for x in range(1, 21)}
print(d)
res = {k: v for k, v in d.iteritems() if v > 90}
print(res)

在集合中根据条件筛选数据

1
2
3
4
data = [randint(-10, 10) for _ in range(10)]
s = set(data)
res = {x for x in s if x%3 == 0}
print(res)
-------------The End-------------
0%