Python代码阅读(第5篇):根据过滤器拆分列表

本文介绍了Python代码片段`bifurcate`函数,它根据提供的过滤器将列表拆分为两个子列表。通过遍历`enumerate`对象,该函数利用列表推导式将过滤器中为True的元素放入第一个列表,为False的放入第二个列表。同时,文章还阐述了`enumerate`函数的作用,它是如何生成带索引的迭代器,并给出了使用示例。此外,还提及了列表推导式的应用,帮助初学者更好地理解代码逻辑。

Python 代码阅读合集介绍:为什么不推荐Python初学者直接看项目源码

本篇阅读的代码实现了通过过滤器拆分列表的功能。

本篇阅读的代码片段来自于30-seconds-of-python

bifurcate

def bifurcate(lst, filter):
  return [
    [x for i, x in enumerate(lst) if filter[i] == True],
    [x for i, x in enumerate(lst) if filter[i] == False]
  ]

# EXAMPLES
bifurcate(['beep', 'boop', 'foo', 'bar'], [True, True, False, True]) # [ ['beep', 'boop', 'bar'], ['foo'] ]

bifurcate函数通过一个过滤器filter定义的内容,将输入列表lst分成两组。将filter中为True的对应的lst的项放入结果的第一个列表中,将filter中为False的对应的lst的项放入结果的第二个列表中。

enumerate

enumerate(iterable, start=0)

enumerate函数接收一个可迭代对象,并返回一个迭代对象。该迭代对象每次迭代返回一个元组,该元组包括一个序号和接收的可迭代对象的迭代值。start参数用于设定序号的初始值,默认为0。示例使用为:

>>> seasons = ['Spring', 'Summer', 'Fall', 'Winter']
>>> list(enumerate(seasons))
[(0, 'Spring'), (1, 'Summer'), (2, 'Fall'), (3, 'Winter')]
>>> list(enumerate(seasons, start=1))
[(1, 'Spring'), (2, 'Summer'), (3, 'Fall'), (4, 'Winter')]

enumerate函数的实现逻辑相当于如下代码:

def enumerate(sequence, start=0):
    n = start
    for elem in sequence:
        yield n, elem
        n += 1

列表推导式

该函数使用列表推导式判断lst里面值对应位置的filter的值,并生成对应的分组列表。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值