itertools.dropwhile
itertools.dropwhile 使你能夠在條件首次變為 False
後從序列中獲取專案。
def is_even(x):
return x % 2 == 0
lst = [0, 2, 4, 12, 18, 13, 14, 22, 23, 44]
result = list(itertools.dropwhile(is_even, lst))
print(result)
這輸出了 [13, 14, 22, 23, 44]
。
( 此示例與 takewhile
的示例相同,但使用 dropwhile
。 )
注意,違反謂詞的第一個數字(即:返回布林值的函式)is_even
是 13
。之前的所有元素都將被丟棄。
在產生的輸出由 dropwhile
類似於從下面的程式碼所產生的輸出。
def dropwhile(predicate, iterable):
iterable = iter(iterable)
for x in iterable:
if not predicate(x):
yield x
break
for x in iterable:
yield x
takewhile
和 dropwhile
產生的結果的串聯產生了原始的可迭代。
result = list(itertools.takewhile(is_even, lst)) + list(itertools.dropwhile(is_even, lst))