python 如何用迭代器遍历

lyqf365 2011-04-12 01:19:05
昨天刚开始看python


def: fibonacci():
a , b = 0 , 1
while True:
yield b
a , b = b , a + b
#if a > 100000 :
#break
#前面是书上的例子,后面两行注释掉的是我加上的,不知有没必要

fib = fibonacci()
#如果用fib.__next__()可以一次访问一个,怎么能用循环遍历呢?我用的是python 3.2的
...全文
151 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
lyqf365 2011-04-12
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 iambic 的回复:]
不知道你在干啥。哪有用__next__遍历的。书上会没写怎么遍历generator?

Python code

# Python 2.x,自己改成3.x的吧。
def fibonacci():
a , b = 0 , 1
while True:
yield b
a , b = b , a + b

import itertoo……
[/Quote]

我就是在看书啊……我之前都用C的,这些脚本刚开始接触,好多东西跟C差别很大
不过现在明白一点点了,要用itertools这个库吧,结贴了
iambic 2011-04-12
  • 打赏
  • 举报
回复
不知道你在干啥。哪有用__next__遍历的。书上会没写怎么遍历generator?

# Python 2.x,自己改成3.x的吧。
def fibonacci():
a , b = 0 , 1
while True:
yield b
a , b = b , a + b

import itertools
print list(itertools.islice(fibonacci(), 10)) # 打印前十个

# 无限遍历
for i in fibonacci():
# 需要的话自己break
print i

generator就是迭代用的,哪有往前遍历的。需要重用就重新创建一个。如果真的需要缓存就保存到list里(如list(itertools.islice(fibonacci(), 10)))。
lyqf365 2011-04-12
  • 打赏
  • 举报
回复

fib.__next__()
fib.__next__()
print("下面用for循环遍历:")
j = 0
#这里除了重新fib = fibonacci()之外还有别的办法不?
for i in fib:
print(i, end=' ')
j += 1
if j%10 == 0:
print()#print a newline

一个字母没大写,csdn不能改,重发一下代码
lyqf365 2011-04-12
  • 打赏
  • 举报
回复
没人回复啊……
我再补充的一下如果用fib.__next__()访问过前几个了,是不是就不能再从头遍历了?

fib.__next__()
fib.__next__()
print("下面用for循环遍历:")
j = 0
#这里除了重新fib = fibonacci()之外还有别的办法不?
for i in fib:
print(i, end=' ')
j += 1
if j%10 == 0:
print()#print a newline
上帝无言 2011-04-12
  • 打赏
  • 举报
回复

def fib(max):
a, b = 0, 1
while a < max:
yield a #每循环一次都会记住a的值也就是他们的和,再带入下面计算
a, b = b, a + b

for n in fib(1000):
print n

37,720

社区成员

发帖
与我相关
我的任务
社区描述
JavaScript,VBScript,AngleScript,ActionScript,Shell,Perl,Ruby,Lua,Tcl,Scala,MaxScript 等脚本语言交流。
社区管理员
  • 脚本语言(Perl/Python)社区
  • IT.BOB
加入社区
  • 近7日
  • 近30日
  • 至今

试试用AI创作助手写篇文章吧