python迭代-如何对迭代器做切片操作
如何对迭代器做切片操作
问题举例
读取某个文件内容的100~300行内容,我们是否可以使用
类似列表切片的方式得到一个100~300行文件内容的生成器
分析
列表的切片操作其实是在重载方法__getItem__方法
可以通过file.readlines()后再做切片,内存会加载整个文件到内存,如果文件太大,会浪费内存空间
解决思路
使用itertools.isslice,它能返回一个迭代器对象切片的生成器
代码
from itertools import islice
f = open('test.txt')
for line in islice(f, 100-1, 300):
print(line)
前面100行也要读进来
自己实现一个islice
from itertools import islice
def my_islice(iterable, start, end, step=1):
tmp = 0
for i, x in enumerate(iterable):
if i >= end:
break if i >= start:
if tmp == 0:
tmp = step
yield x
tmp -= 1 print(list(my_islice(range(100, 150), 10, 20, 3)))
print(list(islice(range(100, 150), 10, 20, 3)))
python迭代-如何对迭代器做切片操作的更多相关文章
- 8、如何实现可迭代对象和迭代器对象 9、如何使用生成器函数实现可迭代对象 10、如何进行反向迭代以及如何实现反向迭代 11、如何对迭代器做切片操作 12、如何在一个for语句中迭代多个可迭代对象
8.如何实现可迭代对象和迭代器对象 PS:注意重载Iterator方法的时候,需要和原来的方法名一样,否则创建实例时会报错 from collections import Iterator,Itera ...
- 完全理解 Python 迭代对象、迭代器、生成器(转)
完全理解 Python 迭代对象.迭代器.生成器 本文源自RQ作者的一篇博文,原文是Iterables vs. Iterators vs. Generators » nvie.com,俺写的这篇文章是 ...
- 完全理解 Python 迭代对象、迭代器、生成器
完全理解 Python 迭代对象.迭代器.生成器 2017/05/29 · 基础知识 · 9 评论 · 可迭代对象, 生成器, 迭代器 分享到: 原文出处: liuzhijun 本文源自RQ作者 ...
- Python中实现对list做减法操作介绍
Python中实现对list做减法操作介绍 这篇文章主要介绍了Python中实现对list做减法操作介绍,需要的朋友可以参考下 问题描述:假设我有这样两个list, 一个是list1,list1 = ...
- 完全理解Python迭代对象、迭代器、生成器
在了解Python的数据结构时,容器(container).可迭代对象(iterable).迭代器(iterator).生成器(generator).列表/集合/字典推导式(list,set,dict ...
- Python迭代对象与迭代器
一.迭代对象 1.概念 迭代对象:可以直接作用于for循环的对象统称为可迭代对象:Iterable. 2.可以直接作用于for循环的数据类型 (1)集合类数据类型,如list, tuple, dict ...
- 理解Python迭代对象、迭代器、生成器
作者:zhijun liu链接:https://zhuanlan.zhihu.com/p/24376869来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处. 本文源自RQ作 ...
- [转载]完全理解Python迭代对象、迭代器、生成器
译文地址:liuzhijun 在了解Python的数据结构时,容器(container).可迭代对象(iterable).迭代器(iterator).生成器(generator).列表/集合/字典推导 ...
- Python 迭代对象、迭代器、生成器
原文出处: liuzhijun 本文源自RQ作者的一篇博文,原文是Iterables vs. Iterators vs. Generators,俺写的这篇文章是按照自己的理解做的参考翻译,算不上是原文 ...
随机推荐
- python第九天(9-34)
一:队列的三种模式 先进先出(FIFO) class queue.Queue(maxsize) 后进先出(LIFO) class queue.LifoQueue(maxsize) 优先级顺序(优先级低 ...
- [转]IntelliJ IDEA 使用spring-boot-devtools热部署无效解决办法
来源:https://www.jianshu.com/p/4d8aa6dfd103 相信大部分使用IntelliJ IDEA的同学都会遇到这个问题,即使项目使用了spring-boot-devtool ...
- day26 面向对象 单例模式总结
如果是在python2中,就需要手动继承object, 基于__new__方法 基于__new__方法 class Foo(object): def __new__(cls,*args,**kwarg ...
- EHDU-1039 asier Done Than Said?
Password security is a tricky thing. Users prefer simple passwords that are easy to remember (like b ...
- BZOJ.5110.[CodePlus2017]Yazid 的新生舞会(线段树/树状数组/分治)
LOJ BZOJ 洛谷 又来发良心题解啦 \(Description\) 给定一个序列\(A_i\).求有多少个子区间,满足该区间众数出现次数大于区间长度的一半. \(n\leq5\times10^5 ...
- Python网络数据采集PDF
Python网络数据采集(高清版)PDF 百度网盘 链接:https://pan.baidu.com/s/16c4GjoAL_uKzdGPjG47S4Q 提取码:febb 复制这段内容后打开百度网盘手 ...
- 复杂链表的复制(Hard)
问题来源:选自LeetCode 138:复制带随机指针的链表 问题描述: 题目给定信息: 该链表中每一个节点的成员变量都有两个,一个是next指针指向该节点的下一个节点,一个是random指针指向不确 ...
- 【C语言程序】今天是祖国母亲的生日,特意编写一个小程序,为祖国母亲庆生~
#include <stdio.h> #define N 80 int main(int argc, char *argv[]) { char a[N]; printf("Hel ...
- MongoDB_简介_安装_基本使用_js_mongoose 操作 MongoDB 编程
数据库 按照数据结构来组织.存储和管理数据的仓库 程序运行时,数据存储于内存中,一旦程序结束或者断电,就会数据丢失 为了将有些数据持久化存储到硬盘中,并确保可操作性和安全性,就需要数据库 分类: 关系 ...
- Linux 手册惯用的节名
linux 手册将