Python中的dropwhile()
和takewhile()
函数可以用于对一个可迭代对象进行条件过滤,两个函数都需要传入一个函数和一个可迭代对象作为参数。函数最终会返回一个生成器对象用于处理过滤后的可迭代对象。
dropwhile()函数使用方法
dropwhile()
函数会将可迭代对象从左到右一项项进行检索,只有当前项满足条件时才会将其从生成器对象中丢弃,反之则会将其包含在生成器对象中。当某一项不再满足条件时,后续的所有项都会包含在生成器对象中。以下是dropwhile()
函数的形式:
itertools.dropwhile(predicate, iterable)
其中predicate
为一个函数,用于对待过滤项进行检测并返回一个布尔值。iterable
为被过滤的可迭代对象,一般是一个列表或元组。
以下是一个使用dropwhile()
函数的例子,通过该函数过滤掉列表中以零开始的元素:
import itertools
lst = [0, 1, 0, 2, 4, 6, 0, 3, 7]
lst_filter = itertools.dropwhile(lambda x: x == 0, lst)
# 输出 [1, 0, 2, 4, 6, 0, 3, 7]
for i in lst_filter:
print(i)
takewhile()函数使用方法
takehile()
函数同样会将可迭代对象从左到右一项项进行检索,只有当前项满足条件时才会将其包含在生成器对象中,反之则停止处理。与dropwhile()
函数不同的是,一旦某一项不再满足条件,后续的所有项都将被忽略。以下是takewhile()
函数的形式:
itertools.takewhile(predicate, iterable)
其中predicate
为一个函数用于对待过滤项进行检测并返回一个布尔值。iterable
为被过滤的可迭代对象,一般是一个列表或元组。
以下是一个使用takewhile()
函数的例子,通过该函数取出列表中小于等于3的元素:
import itertools
lst = [1, 2, 3, 2, 1, 0, 1, 2, 3]
lst_filter = itertools.takewhile(lambda x: x <= 3, lst)
# 输出 [1, 2, 3, 2, 1]
for i in lst_filter:
print(i)
希望上面的解释和示例能够帮助你理解dropwhile()
和takewhile()
函数的使用方法。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python dropwhile()和takewhile()过滤状态 - Python技术站