itertools模块

  • itertools.filterfalse()
# 创建一个迭代器,从可迭代的元素中筛选出仅返回false的元素
import itertools

l1 = itertools.filterfalse(lambda x: x>4, [1,2,3,4,5,6,7,8,9])
print(l1)  # <itertools.filterfalse object at 0x0083E658>
print(list(l1))  # [1,2,3,4]
  • itertools.dropwhile()
# 跳过可迭代对象的开始部分
# 比如你想遍历一个可迭代对象,但是它开始的某些元素你并不感兴趣,想跳过它们。
# 使用:传递一个函数对象和一个可迭代对象。返回一个迭代器对象,丢弃原有序列中直到函数返回False之前的所有元素,然会返回后面所有元素

# 示例
with open('xx.txt') as f;
	for line in f:
        print(line, end='')
        
    
"""打印内容
# User Database
#
# Note that this file is consulted directly only when the system is running
# in single-user mode. At other times, this information is provided by
# Open Directory.
nobody:*:-2:-2:Unprivileged User:/var/empty:/usr/bin/false
root:*:0:0:System Administrator:/var/root:/bin/sh
"""
# 如果你想跳过开始部分的注释行的话,可以这样做
from itertools import dropwhile
with open('xx.txt') as f:
    for line in dropwhile(lambda x: x.startwith('#'), f):
    	print(line, end='')
        
# 参考itertools.islice()  # 知道跳过的元素的个数,可以使用这个
  • itertools.takewhile()
# 迭代一个序列,直到指定的谓词首次变为假
import itertools

lst = [7,5,10,4,9,6,2,1]

print(list(itertools.takewhile(lambda x:x>4, lst)))
# 输出
[7,5,10] # 会将lst中的元素一个一个拿到lambda中进行比较,当遇到一个为false时,那么就结束

-------------------------------------------

个性签名:代码过万,键盘敲烂!!!

如果觉得这篇文章对你有小小的帮助的话,记得在右下角点个“推荐”哦,博主在此感谢!

原文地址:https://www.cnblogs.com/weiweivip666/p/14769481.html