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]
]
bifurcate(['beep', 'boop', 'foo', 'bar'], [True, True, False, True])
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 的值,并生成对应的分组列表。
|