1.最简单的方法

1.1for循环遍历再加个判断条件进行筛选

例如筛选列表中大于0的数:

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

2.python中筛选方式

2.1 (list)列表解析

例:筛选目标列表中大于0的值

  1. from random import randint
  2. # 创建随机数列表
  3. list = [randint(-10,10) for _ in range(10)]
  4. # 列表解析筛选大于0的数据
  5. [i for i in list if i >=0]

2.2 (list)filter函数解析

filter函数在2.x版本中会直接返回一个列表,在3.x版本中户返回一个生成器对象
py3示例:

  1. from random import randint
  2. # 创建随机数列表
  3. list = [randint(-10,10) for _ in range(10)]
  4. # 使用filter筛选,获取的是一个生成器对象
  5. f = filter(lambda x:x >=0, list)
  6. # 传给list构造器,生成器对象使用后消耗
  7. list(f)

2.3 (dict)字典解析

类似list解析
例:筛选一个班级的分数

  1. from random import randint
  2. # 创建一个班级20个学生的分数
  3. dict = {'student%d' % i: randint(50, 100) for i in range(1, 21)}
  4. # 字典解析筛选分数高于90的
  5. {k:v for k, v in d.items() if v >= 90}

2.4 (dict)filter函数解析

与list类似
例:

  1. from random import randint
  2. # 创建一个班级20个学生的分数
  3. dict = {'student%d' % i: randint(50, 100) for i in range(1, 21)}
  4. # 使用filter筛选,获取一个生成器对象
  5. f = filter(lambda item: item[1] >= 90, d.items())
  6. # 传给字典构造器生成一个过滤后的字典
  7. dict(f)

2.5 (set)解析方式同理list和dict


~~