Python论坛  - 讨论区

标题:[python-chinese] Fwd: Re: 如何能够得到Iterator的长度呢?

2007年01月09日 星期二 12:37

yi huang yi.codeplayer在gmail.com
星期二 一月 9 12:37:44 HKT 2007

---------- Forwarded message ----------
From: yi huang <yi.codeplayer at gmail.com>
Date: Jan 9, 2007 12:34 PM
Subject: Re: Re: [python-chinese] 如何能够得到Iterator的长度呢?
To: mikegaulmail-python at yahoo.com.cn

On 1/9/07, mikegaulmail-python at yahoo.com.cn <
mikegaulmail-python at yahoo.com.cn> wrote:
>
> 我必须在for之前判断一下,因为,如果Iterator中为空的话,那么后面还有很多Iterator这样的类型我就不用继续检查了,直接退出程序就可以了。
>
>
> 另外,如果用next()检查确实可以知道是否为空,但是这样的话,再用for的时候,就从Iterator的第二个元素开始了,我想再从第一个开始可以吗?
>
> --- yi huang <yi.codeplayer at gmail.com>写道:
>
> > On 1/9/07, mikegaulmail-python at yahoo.com.cn <
> > mikegaulmail-python at yahoo.com.cn> wrote:
> > >
> > > 好像Iterator这个类型自带没有这个方法。
> > >
> > >
> >
> 我需要判断Iterator是否包含数据,如果不包含,则跳出,包含数据,则进入for循环。
> > >
> > > 谢谢!
> > >
> > >
> > >
> > > __________________________________________________
> > > 赶快注册雅虎超大容量免费邮箱?
> > > http://cn.mail.yahoo.com
> > > _______________________________________________
> > > python-chinese
> > > Post: send python-chinese at lists.python.cn
> > > Subscribe: send subscribe to
> > python-chinese-request at lists.python.cn
> > > Unsubscribe: send unsubscribe to
> > python-chinese-request at lists.python.cn
> > > Detail Info:
> > http://python.cn/mailman/listinfo/python-chinese
> >
> >
> > In [11]: class Iter(object):
> >    ....:     def __iter__(self):return self
> >    ....:     def next(self):raise StopIteration
> >    ....:
> >
> > In [12]: for i in Iter():print i
> >    ....:
> >
> > 直接 for 就可以了,如果迭代器中没有数据就不会进入
> > for 循环。
> > 另外你可以看到当 迭代器 迭代到没有数据的时候会抛出
> > StopIteration 异常,你要判断的话可以手动去调用 next
> > 然后捕获这个异常。
> >
> > --
> > http://codeplayer.blogspot.com/
> >
>
>
> __________________________________________________
> 赶快注册雅虎超大容量免费邮箱?
> http://cn.mail.yahoo.com
>

如果这些迭代器是你自己写的,那么最自然的做法就是给它们加上 __len__ 方法,返回它们的长度,对它们调用 len() 方法实际上就是调用它们的
__len__ 方法。
如果它们迭代的数据的长度确实是固定的话,你可以考虑给它们加上 __len__ 方法。
如果你无法获取到被迭代的数据或是这些数据在迭代器初始化的时候不确定,
那估计就只能在第一次调用 next 的时候进行某种特殊处理了。

-- 
http://codeplayer.blogspot.com/

-- 
http://codeplayer.blogspot.com/
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://python.cn/pipermail/python-chinese/attachments/20070109/4464fae0/attachment-0001.htm 

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

如下红色区域有误,请重新填写。

    你的回复:

    请 登录 后回复。还没有在Zeuux哲思注册吗?现在 注册 !

    Zeuux © 2025

    京ICP备05028076号