迭代器切片操作

迭代器对象一般来说是不支持像可迭代对象(list,tuple等)的切片操作。
如下示例:

def count(n):
   while True:
       yield n
       n += 1

c = count(0)
c[10:20]
Trackback(most recent call last):
   File "<stdin>", line 1, in <module>
TypeError: 'generator' object is not subscriptable

itertools模块提供了对迭代器对象的切片操作支持,itertools提供了模块级函数islice。

import itertools
for x in itertools.islice(c, 10, 20):
    print(x)
...
10
11
12
13
14
15
16
17
18
19

原文地址:https://www.cnblogs.com/jeffrey-yang/p/11808977.html

时间: 2024-07-28 13:14:55

迭代器切片操作的相关文章

还有这种操作?异步迭代器的切片操作!!!

问题引出 对于同步中的迭代器我们可以使用itertools的islice模块来实现 # -*- coding: utf-8 -*- # @Time : 2019/1/2 11:52 AM # @Author : cxa # @File : 切片.py # @Software: PyCharm from itertools import islice la = (x for x in range(20)) print(type(la)) for item in islice(la, 5, 9):

Python进阶:迭代器与迭代器切片

Python进阶:迭代器与迭代器切片 在前两篇关于 Python 切片的文章中,我们学习了切片的基础用法.高级用法.使用误区,以及自定义对象如何实现切片用法(相关链接见文末).本文是切片系列的第三篇,主要内容是迭代器切片. 迭代器是 Python 中独特的一种高级特性,而切片也是一种高级特性,两者相结合,会产生什么样的结果呢? 1.迭代与迭代器 首先,有几个基本概念要澄清:迭代.可迭代对象.迭代器. 迭代 是一种遍历容器类型对象(例如字符串.列表.字典等等)的方式,例如,我们说迭代一个字符串"a

Python中的切片操作

Python中的切片操作功能十分强大,通常我们利用切片来进行提取信息,进行相关的操作,下面就是一些切片的列子,一起来看看吧,希望对大家学习python有所帮助. 列如我们从range函数1-100中取7的倍数,函数及结果如下所示: >>> for i in range(1,100)[6::7]: print i 7 14 21 28 35 42 49 56 63 70 77 84 91 98 取一个list或tuple的部分元素是非常常见的操作.比如,一个list如下: >>

Python切片操作

1.切片 Python中序列包括string.list.tuple,序列可以使用切片操作,利用切片操作可以获得对应类型的变量的任意部分(子集) 比如 s="HelloWorld",我们可以通过切片操作s[0:5]获得"Hello". 序列的下标是从0开始的 从左到右,下标范围:[0,len(s)-1) 从右到左,下标范围:[-len(s),-1] 2.切片示例 切片的语法为:[start:end:step] 表示从下标start开始,以步长step跨越,以下标end

Python序列的切片操作与技巧

切片操作 对于具有序列结构的数据来说,切片操作的方法是:consequence[start_index: end_index: step]. start_index: 表示是第一个元素对象,正索引位置默认为0:负索引位置默认为 -len(consequence) end_index: 表示是最后一个元素对象,正索引位置默认为 len(consequence)-1:负索引位置默认为 -1. step: 表示取值的步长,默认为1,步长值不能为0. [注意]对于序列结构数据来说,索引和步长都具有正负两

Python array,list,dataframe索引切片操作 2016年07月19日——智浪文档

array,list,dataframe索引切片操作 2016年07月19日——智浪文档 list,一维,二维array,datafrme,loc.iloc.ix的简单探讨 Numpy数组的索引和切片介绍: 从最基础的list索引开始讲起,我们先上一段代码和结果: a = [0,1,2,3,4,5,6,7,8,9] a[:5:-1] #step < 0,所以start = 9 a[0:5:-1] #指定了start = 0 a[1::-1] #step < 0,所以stop = 0 输出: [

2016.07.09-10 切片操作

切片操作: 对有序数列使用下标操作进行区域切割. 最常见的的切片操作,以list为例(其他的有序数列,例如tuple和str的切片操作都跟list相同): lst[start:end:step] start:起始索引,end:结束索引,step步长 切片操作的取值区域,包含起始索引的元素,不包含结束索引的元素 正数索引,从0开始,从左往右计数 负数索引,从-1开始,从右往左计数 实例:如果step(步长)为默认值(1)或者其他正整数时,切片顺序是从左往右,start(起始索引)必须在end(结束

关于javascript里面仿python切片操作数组的使用方法

其实在使用了好一段时间的 python之后,我觉得最让我念念不忘的并不是python每次在写函数或者循环的时候可以少用{}括号这样的东西(ps:其实也是了..感觉很清爽,而且又开始写js的时候老是想用xxx in range(): ...跪.:( ) 而是我觉得字符串操作的切片真实让我感到前所未有的爽. 试想一下,我们平时操作最多的数组和字符串在切片的帮助下,不知道可以省去多少时间和麻烦.而且有了切片甚至不用去记很多可以被切片代替的api. 今天我在啃<学习javascript数据结构与算法>

2016.07.09-10切片操作

切片操作 对有序数列使用下标操作进行区域切割. 最常见的的切片操作,以list为例(其他的有序数列,例如tuple和str的切片操作都跟list相同): lst[start:end:step] start:起始索引,end:结束索引,step步长 切片操作的取值区域,包含起始索引的元素,不包含结束索引的元素 正数索引,从0开始,从左往右计数 负数索引,从-1开始,从右往左计数 实例:如果step(步长)为默认值(1)或者其他正整数时,切片顺序是从左往右,start(起始索引)必须在end(结束索