Python----零零碎碎----实用技巧---0001

265 阅读1分钟

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

实际案例:

  • 过滤掉列表[3,4,-1,-5,8,9]中的负数
  • 筛选字典{'lili':79,'jim':88,.....}中高于90的项
  • 筛选集合{77,89,23,24,...}中可以被3整除的元素

列表解析

import random import randint
a = [randint(-10,10) for i in range(10)]
#a =[-8, -8, -7, -5, -4, -8, -8, 9, 2, 7]
a = [i for i in a if i>0]
#a = [9, 2, 7]

内置函数 filter

filter是过滤器的意思

import random import randint
a = [randint(-10,10) for i in range(10)]
#a =[-8, -8, -7, -5, -4, -8, -8, 9, 2, 7]
list(filter( lambda x:x>0 ,a))
#[9, 2, 7]

以上是针对列表的。


a = set(a)
#{-8, -7, -5, -4, 2, 7, 9}
{i for i in a if i%==0}
#{9}

或者:

a = [ randint(-10,10) for _ in range(10)]
#[3, -7, -6, 3, -7, 9, 2, 6, -1, -2]
set(filter( lambda x:x>0 ,a))
#{2, 3, 6, 9}

以上是针对集合的。可以发现,集合和列表是类似的


字典解析

d = {i:randint(60,100) for i in range(1,20)}
'''{1: 77,
 2: 68,
 3: 65,
 4: 80,
 5: 72,
 6: 90,
 7: 82,
 8: 72,
 9: 87,
 10: 94,
 11: 98,
 12: 96,
 13: 83,
 14: 97,
 15: 86,
 16: 74,
 17: 96,
 18: 61,
 19: 100}'''
{k:v for k,v in  d.items() if v>90}
#{3: 91, 10: 95, 19: 97}