Python论坛  - 讨论区

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

2007年01月09日 星期二 11:40

mikegaulmail-python在yahoo.com.cn mikegaulmail-python在yahoo.com.cn
星期二 一月 9 11:40:07 HKT 2007

好像Iterator这个类型自带没有这个方法。

我需要判断Iterator是否包含数据,如果不包含,则跳出,包含数据,则进入for循环。

谢谢!



__________________________________________________
赶快注册雅虎超大容量免费邮箱?
http://cn.mail.yahoo.com

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

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

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

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/
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://python.cn/pipermail/python-chinese/attachments/20070109/09c65443/attachment.htm 

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

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

mikegaulmail-python在yahoo.com.cn mikegaulmail-python在yahoo.com.cn
星期二 一月 9 12:18:13 HKT 2007

我必须在for之前判断一下,因为,如果Iterator中为空的话,那么后面还有很多Iterator这样的类型我就不用继续检查了,直接退出程序就可以了。

另外,如果用next()检查确实可以知道是否为空,但是这样的话,再用for的时候,就从Iterator的第二个元素开始了,我想再从第一个开始可以吗?

--- yi huang <yi.codeplayer在gmail.com>写道:

> On 1/9/07, mikegaulmail-python在yahoo.com.cn <
> mikegaulmail-python在yahoo.com.cn> wrote:
> >
> > 好像Iterator这个类型自带没有这个方法。
> >
> >
>
我需要判断Iterator是否包含数据,如果不包含,则跳出,包含数据,则进入for循环。
> >
> > 谢谢!
> >
> >
> >
> > __________________________________________________
> > 赶快注册雅虎超大容量免费邮箱?
> > http://cn.mail.yahoo.com
> > _______________________________________________
> > python-chinese
> > Post: send python-chinese在lists.python.cn
> > Subscribe: send subscribe to
> python-chinese-request在lists.python.cn
> > Unsubscribe: send unsubscribe to 
> python-chinese-request在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

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

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

limodou limodou在gmail.com
星期二 一月 9 12:21:54 HKT 2007

On 1/9/07, mikegaulmail-python在yahoo.com.cn
<mikegaulmail-python在yahoo.com.cn> wrote:
> 我必须在for之前判断一下,因为,如果Iterator中为空的话,那么后面还有很多Iterator这样的类型我就不用继续检查了,直接退出程序就可以了。
>
> 另外,如果用next()检查确实可以知道是否为空,但是这样的话,再用for的时候,就从Iterator的第二个元素开始了,我想再从第一个开始可以吗?
>

iterator一般是动态生成的,所以有时不好决定它的长度。而一般next()一旦执行,是回不去的。只能是在设计iterator时考虑了这个问题才可以。简单情况下是不行的。

-- 
I like python!
UliPad <>: http://wiki.woodpecker.org.cn/moin/UliPad
My Blog: http://www.donews.net/limodou

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

2007年01月09日 星期二 13:21

tocer tocer.deng在gmail.com
星期二 一月 9 13:21:56 HKT 2007

把Iterator转换成 list,再判断

mikegaulmail-python在yahoo.com.cn wrote::
> 我必须在for之前判断一下,因为,如果Iterator中为空的话,那么后面还有很多Iterator这样的类型我就不用继续检查了,直接退出程序就可以了。
> 
> 另外,如果用next()检查确实可以知道是否为空,但是这样的话,再用for的时候,就从Iterator的第二个元素开始了,我想再从第一个开始可以吗?
> 
> --- yi huang <yi.codeplayer在gmail.com>写道:
> 
>> On 1/9/07, mikegaulmail-python在yahoo.com.cn <
>> mikegaulmail-python在yahoo.com.cn> wrote:
>>> 好像Iterator这个类型自带没有这个方法。
>>>
>>>
> 我需要判断Iterator是否包含数据,如果不包含,则跳出,包含数据,则进入for循环。
>>> 谢谢!
>>>
>>>
>>>
>>> __________________________________________________
>>> 赶快注册雅虎超大容量免费邮箱?
>>> http://cn.mail.yahoo.com
>>> _______________________________________________
>>> python-chinese
>>> Post: send python-chinese在lists.python.cn
>>> Subscribe: send subscribe to
>> python-chinese-request在lists.python.cn
>>> Unsubscribe: send unsubscribe to 
>> python-chinese-request在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
> _______________________________________________
> python-chinese
> Post: send python-chinese在lists.python.cn
> Subscribe: send subscribe to python-chinese-request在lists.python.cn
> Unsubscribe: send unsubscribe to  python-chinese-request在lists.python.cn
> Detail Info: http://python.cn/mailman/listinfo/python-chinese

-- 
Vim 中文 Google 论坛 http://groups.google.com/group/Vim-cn

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

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

    你的回复:

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

    Zeuux © 2025

    京ICP备05028076号