Python Tips 6

扁平化列表

通过使用yield from语句结合递归的方法可以方便地实现扁平化列表

yield from是Python3.3开始出现的语法,其与yield的区别在于yield from可以将后面的可迭代对象中的每个元素一个一个的返回,而yiled则会返回整个可迭代对象,列如

带可变状态的生成器

如果我们想要定义一个生成器,又希望能够改变该生成器中一些参数,例如我们定义一个返回batch_size数量的元素,其中,batch_size是可以通过外部随时更改的,如果使用生成器函数定义,那会导致相当复杂的代码。这时,我们可以通过定义一个类,并且实现类中的__iter__方法即可

我们希望每次返回一个[1, 3]之间随机数量的元素,我们可以通过更改对象batch_size的方法来实现

迭代器做切片

普通的切片操作对迭代器并不起作用,并且会报错

这时,我们可以使用itertools模块中的islice函数,islice将会产生一个切片范围内的迭代器。

不过需要注意的是,islice会消耗原迭代器的数据

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20181119G0JBU800?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

同媒体快讯

扫码关注云+社区

领取腾讯云代金券