[Python高效编程] - 在列表,字典,集合中根据条件筛选数据

本文介绍了在Python3.6环境下,使用pycharm进行编程时,如何在不同数据结构如列表、字典和集合中根据条件进行数据筛选。针对列表,推荐使用filter函数和列表解析,特别是列表解析能提供更快的处理速度。在字典中,展示了筛选值大于80的键值对的方法。而在集合中,演示了如何筛选出偶数元素的步骤。文章强调了函数式编程在提升效率上的优势。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

开发环境

  • Python版本: python3.6
  • 调试工具:pycharm 2017.1.3
  • 电脑系统:Windows 10 64位系统

对于不同的数据结构:列表,字典,集合,通用的数据筛选手段为迭代

例如筛选data中的字符串:

data = [1, 2, 'a', -3, 'b', -4, 5, 5, 'c', -7]

res = []
for x in data:
    if isinstance(x, str):
        res.append(x)

print(res)
['a', 'b', 'c']

为了使编程风格更加地pythonic,采用函数式编程。

列表,过滤掉列表中的数值

使用filter函数

data = [1, 2, 'a', -3, 'b', -4, 5, 5, 'c', -7]
res = filter(lambda x: isinstance(x, str), data)
print(res)
print(list(res))
<filter object at 0x00000204B7AE63C8>
['a', 'b', 'c']

使用列表解析

data = [1, 2, 'a', -3, 'b', -4, 5, 5, 'c', -7]
res = [x for x in data if isinstance(x, str)]
print(res)
['a', 'b', 'c']

推荐使用列表解析,处理速度更快

字典,筛选出字典中值大于80的项

step1:随机生成某班10人的学号和分数
step2:筛选分数大于80的键值对k,v

from random import randint
data = {}
data = {x: randint(60, 100) for x in range(1, 11)}
print(data)
res = {}
res = {key: value for key, value in data.items() if value > 80}
print(res)
{1: 61, 2: 69, 3: 83, 4: 94, 5: 72, 6: 65, 7: 94, 8: 100, 9: 74, 10: 92}
{3: 83, 4: 94, 7: 94, 8: 100, 10: 92}

集合,筛选集合中偶数的元素

step1:将data转化为集合
step2:集合解析,对2取模为0

from random import randint
data = []
data = [randint(1, 100) for _ in range(1, 11)]
print(data)
s = set(data)
print(s)
res = set()
res = {x for x in s if x%2 == 0}
print(res)
[43, 13, 3, 100, 62, 89, 17, 37, 66, 70]
{66, 3, 100, 37, 70, 43, 13, 17, 89, 62}
{62, 66, 100, 70}

小结:列举了列表,字典,集合中根据条件筛选数据的方法,用列表解析和filter函数的速度都远快于迭代方式。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值