写点什么

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

用户头像
Félix
关注
发布于: 1 小时前
Python代码阅读(第5篇):根据过滤器拆分列表

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


本篇阅读的代码片段来自于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]  ]
# EXAMPLESbifurcate(['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的值,并生成对应的分组列表。


列表推导式的简单介绍可以查看 Python 代码阅读:过滤掉列表中的唯一值中的“列表推导式”章节。

发布于: 1 小时前阅读数: 3
用户头像

Félix

关注

还未添加个人签名 2018.05.04 加入

还未添加个人简介

评论

发布
暂无评论
Python代码阅读(第5篇):根据过滤器拆分列表