安迪_963

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理
  135 随笔 :: 0 文章 :: 9 评论 :: 19万 阅读

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

1
2
3
4
5
l=range(20)
l= iter(l)
l1=l[5:10]
 
#TypeError: 'range_iterator' object is not subscriptable

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

1
2
3
4
5
6
7
8
9
10
11
12
13
#!/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,

1
2
for j in l:
    print(j)

 

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

 

posted on   Andy_963  阅读(230)  评论(0编辑  收藏  举报
编辑推荐:
· .NET制作智能桌面机器人:结合BotSharp智能体框架开发语音交互
· 软件产品开发中常见的10个问题及处理方法
· .NET 原生驾驭 AI 新基建实战系列:向量数据库的应用与畅想
· 从问题排查到源码分析:ActiveMQ消费端频繁日志刷屏的秘密
· 一次Java后端服务间歇性响应慢的问题排查记录
阅读排行:
· 互联网不景气了那就玩玩嵌入式吧,用纯.NET开发并制作一个智能桌面机器人(四):结合BotSharp
· 一个基于 .NET 开源免费的异地组网和内网穿透工具
· 《HelloGitHub》第 108 期
· Windows桌面应用自动更新解决方案SharpUpdater5发布
· 我的家庭实验室服务器集群硬件清单
点击右上角即可分享
微信分享提示