- dropwhile()
dropwhile()
是Python标准库itertools
模块中的一个函数,用于筛选一个可迭代对象中的元素,直到筛选条件不再成立。具体来说,该函数会从可迭代对象中筛选出满足给定条件的元素,以生成器的形式返回,一旦给定条件不成立,生成器将保留之后的所有元素,不再做筛选。
dropwhile()
语法如下:
itertools.dropwhile(predicate, iterable)
其中,predicate
是用于判断元素是否要被筛选的函数,必须为返回布尔值的函数。iterable
则是要进行筛选的可迭代对象。
示例代码:
import itertools
data = [2, 4, 5, 6, 8, 10, 11, 13]
result = itertools.dropwhile(lambda x: x % 2 == 0, data)
print(list(result))
# 输出结果:[5, 6, 8, 10, 11, 13]
在上述示例中,我们使用dropwhile()
函数来筛选列表data
中的元素,判断条件为:元素不能被2整除。由于2和4都能被2整除,因此dropwhile()
会从列表中删除这两个元素,并保留之后的所有元素。最终结果为[5, 6, 8, 10, 11, 13]
。
- takewhile()
takewhile()
也是Python标准库itertools
模块中的一个函数,它与dropwhile()
函数类似,但是筛选的方式相反。takewhile()
会从可迭代对象中提取尽可能多的元素,使得这些元素满足给定的筛选条件。一旦给定条件不成立,takewhile()
将停止提取元素。
takewhile()
语法如下:
itertools.takewhile(predicate, iterable)
其中,predicate
同样是用于判断元素是否要被筛选的函数,必须为返回布尔值的函数。iterable
则是要进行筛选的可迭代对象。
示例代码:
import itertools
data = [2, 4, 5, 6, 8, 10, 11, 13]
result = itertools.takewhile(lambda x: x % 2 == 0, data)
print(list(result))
# 输出结果:[2, 4]
在上述示例中,我们使用takewhile()
函数来提取列表data
中的元素,判断条件为:元素能够被2整除。由于在列表中,2和4都能被2整除,因此takewhile()
会提取这两个元素。一旦遇到5,筛选条件不再成立,takewhile()
停止工作,最终结果为[2, 4]
。