码迷,mamicode.com
首页 > 其他好文 > 详细

对迭代器进行切片

时间:2017-06-11 16:26:10      阅读:121      评论:0      收藏:0      [点我收藏+]

标签:logs   位置   date   地方   src   注意   odi   class   rip   

直接对迭代器进行切片是不能完成的,例如

l=range(20)
l= iter(l)
l1=l[5:10]

#TypeError: ‘range_iterator‘ object is not subscriptable

 此时会报错,那么如果确实需要对迭代器进行切片呢?

#!/usr/bin/env python
#coding:utf-8
#@Author:Andy
# Date: 2017/6/11

from itertools import islice

l = range(20)
l = iter(l)

t = islice(l,5,10) # 第一个参数指定迭代对象,后面分别为起始,终止,步长
for i in t:
	print(i)

 技术分享

但是一定要注意,islice会将前面已经迭代的项消耗掉,类似于文件中的指针,当迭代到某一个地方,seek的位置是改变了的

例如,如果紧接着上面的运行结束后,再次运行下面的代码,继续迭代l,

for j in l:
	print(j)

 技术分享

它是紧接着刚才的迭代结束位置迭代的,看上去就像将之前的结果消耗掉了。

 

对迭代器进行切片

标签:logs   位置   date   地方   src   注意   odi   class   rip   

原文地址:http://www.cnblogs.com/Andy963/p/6985287.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!