迭代器执行切片

普通的切片对迭代器无法实行切片操作

 1 from itertools import islice
 2 
 3 
 4 def func():
 5     for i in [4, 9, 6, 2]:
 6         if i % 2 == 0:
 7             yield i
 8 
 9 
10 f = func()
11 res = islice(f, 3)
12 for i in res:
13     print(i)
14 print(list(f))

需要注意的是:islice会消耗迭代器中提供的元素,同时因为迭代器具有一次消耗性,所以:

output:

  4
  6
  2
  []

避免迭代器中元素被全部消耗,不可再用,可以在此之前将其转化为列表

同时,islice和dropwhile一道还可以用来跳过可迭代对象的前一部分,具体用法可以去看看源码

 

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:迭代器执行切片 - Python技术站

(0)
上一篇 2023年4月2日 下午4:20
下一篇 2023年4月2日 下午4:20

相关文章

  • __slots__

      在类的层次上定义时,python给实例采用一种更加紧凑的内部表示来管理属性,而非字典,这样,我们只被允许访问__slots__内部的属性   这样定义会带来两点好处,然后具体的实践我在工作中目前运用的还很少,后面如果发现还有什么坑,我再来补充 1、创建大量实例时节省内存 2、访问属性快 1 class Valley: 2 __slots__ = “nam…

    Python开发 2023年4月2日
    00
  • __call__用法简谈

      python一切皆对象,从是否可调用层面讲,对象又可以分为可调用对象、不可调用对象 在本篇中,类中实现__call__双下方法,即将该类的实例变为可调用对象   普通类未实现__call__的方法,实例是不可调用的,先看 1 class Valley: 2 … 3 4 5 if __name__ == ‘__main__’: 6 v = Valley…

    Python开发 2023年4月2日
    00
  • fastapi篇(一)

    fastapi是一个高性能的web开发框架 性能极高,可与 NodeJS, Go 媲美。(得益于Starlette和Pydantic)。 Starlette 是一个轻量级 ASGI 框架/工具包。它非常适合用来构建高性能的 asyncio 服务,并支持 HTTP 和 WebSockets。 官方网址:https://www.starlette.io/   P…

    python 2023年5月9日
    00
  • 循环优化一

    主角:takewhile   判断序列中元素是否为偶数,奇数则终止 这是我们最常用的一种方式,其实没必要这么复杂 1 a = [4, 6, 7, 3] 2 3 4 def judge_is_even(item): 5 if item % 2 == 0: 6 return True 7 return False 8 9 10 # 最常用 11 for item…

    Python开发 2023年4月2日
    00
  • 猴子补丁

    作用:随时修改代码   (在函数或类定义完成之后,再去修改函数的实现过程) “””类似猴子补丁在函数定义好之后,再去更改他的行为”””import typesclass Valley: def func(self): return “等待宣告”def common(self): return “只有永不遏制的奋斗”if __name__ == ‘__main…

    Python开发 2023年4月2日
    00
  • 面向对象之多态

    鸭子类型   我们都知道面向对象的语言有三大特性:封装、继承和多态,在这里我浅谈一下python的多态 1 class PageOne: 2 def status(self): 3 return “按期申报页” 4 5 6 class PageTwo: 7 def status(self): 8 return “其他申报页” 9 10 11 class Pa…

    Python开发 2023年4月2日
    00
  • 派生类中扩展属性

    对于在父类中存在的属性,如果要在其派生类中继续扩展属性   可以这样实现 1 class Valley: 2 def __init__(self): 3 self._name = None 4 5 @property 6 def name(self): 7 return self._name 8 9 @name.setter 10 def name(self…

    Python开发 2023年4月2日
    00
  • 方法的多种调用方式

      方法调用确实我们每个人都会,但是我觉得大家可能用的最多的就是那种常规的方式,这里呢,我要记录一下另外几种方式 1 from operator import attrgetter 2 from operator import methodcaller 3 4 5 class Valley: 6 def func(self): 7 print(“测试方法”)…

    Python开发 2023年4月2日
    00
合作推广
合作推广
分享本页
返回顶部