Itertools in python

Itertools in python

  • 定义
  1. Itertools:Functions creating iterators for efficient looping(是一系列函数,用来创建迭代器,是为了更有效的循环。
  2. 迭代器:可以看成是一个for循环的封装。有无限循环和有限循环
    举个例子:
// 无限循环迭代器cycle
cycle('ABCD') --> A B C D A B C D ...
  1. 对于Itertool functions,它是用来创建和返回一个迭代器。
# itertools.chain(*iterables) 创建一个迭代器
def chain(*iterables):
    # chain('ABC', 'DEF') --> A B C D E F
    for it in iterables:
        for element in it:
            yield element
# classmethod chain.from_iterable(iterable) 类似chain()
def from_iterable(iterables):
    # chain.from_iterable(['ABC', 'DEF']) --> A B C D E F
    for it in iterables:
        for element in it:
       	# yield 相当于return, 只是它返回的是一种iterator
            yield element
  • 通俗来说,这两个迭代器可以把它看作是把这些列表打碎了给它的元素提取出来。也可以看作是flatten扁平化的一个过程。
    举例:
# output: [{'a': 0}, {'b': 1}, {'c': 2}, {'d': 3}]
ite = itertools.chain.from_iterable(
	[
		[{'a':0}, {'b':1}], 
		[{'c':2}], 
		[{'d':3}]
	]
)
print(list(ite)) 

  • 总结
    所以当结构嵌套多层的时候,可以用这个迭代器的方法高效遍历。

  • 可以继续学习的点:
    迭代器结合map,用法更高效。

参考文献

https://docs.python.org/zh-cn/3/library/itertools.html#itertools.chain

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值