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

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

通用解法:迭代

如何在列表、字典、集合中根据条件筛选数据?通常我们的做法是使用迭代。例如针对下面的列表,我们要筛选出其中的非负数,那么通常的做法如下。

data=[2,-2,3,2,5,1,-3,3,,3]

res=[]

forxindata:

ifx>=:

res.append(x)

printres

那么,有没有更加高效优雅的解法呢?

Python 中更优雅的解决方案

列表解析

针对列表中根据条件筛选数据,有两种方法,一是使用函数,二是使用更为高效的列表解析。(据代码测试,列表解析的效率是函数的两倍。)

# 筛选出列表中所有的非负数

data=[2,-2,3,-2,,,-10,10,9,-8]

# 第一种解法:使用 filter() 函数

filter(lambdax:x>=,data)

# 第二种解法:列表解析

[xforxindataifx>=]

字典解析

针对字典,python中也有高效的字典解析。例如,筛选出字典中所有值大于90的元素,可以采用如下代码。

# 筛选出字典中所有值大于90的元素

d={1:70,2:90,3:44,4:55,6:100,7:14,8:88,9:96,10:70}

{k:vfork,vind.iteritems()ifv>90}

集合解析

针对集合,我们也有集合解析,形式上与字典解析一致。例如,我们要筛选出集合中所有可以被3整除的数。

# 筛选出集合中所有可以被3整除的数

s={2,-2,3,2,5,1,-3,3,,3}

{xforxinsifx%3==}

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20181202G12S5200?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券