扁平化列表
通过使用yield from语句结合递归的方法可以方便地实现扁平化列表
yield from是Python3.3开始出现的语法,其与yield的区别在于yield from可以将后面的可迭代对象中的每个元素一个一个的返回,而yiled则会返回整个可迭代对象,列如
带可变状态的生成器
如果我们想要定义一个生成器,又希望能够改变该生成器中一些参数,例如我们定义一个返回batch_size数量的元素,其中,batch_size是可以通过外部随时更改的,如果使用生成器函数定义,那会导致相当复杂的代码。这时,我们可以通过定义一个类,并且实现类中的__iter__方法即可
我们希望每次返回一个[1, 3]之间随机数量的元素,我们可以通过更改对象batch_size的方法来实现
迭代器做切片
普通的切片操作对迭代器并不起作用,并且会报错
这时,我们可以使用itertools模块中的islice函数,islice将会产生一个切片范围内的迭代器。
不过需要注意的是,islice会消耗原迭代器的数据
领取专属 10元无门槛券
私享最新 技术干货