Python--30 迭代器

迭代器

  通常我们接触的迭代器 序列(列表 元组 字符串) 字典

  通常使用for语句来进行迭代

Python提供了两个BIF

  iter()

  __iter__()

  next()

  __next__()

>>> for i in ‘Junjie‘:
...     print(i)
...
J
u
n
j
i
e
>>> for item in links:
...     print(‘%s -> %s‘ % (item,links[item]))
...
百度 -> www.baidu.com
谷歌 -> www.google.com
技术 -> stackoverflow
>>> string = ‘junjie‘
>>> it = iter(string)
>>> next(it)
‘j‘
>>> next(it)
‘u‘
>>> next(it)
‘n‘
>>> next(it)
‘j‘
>>> next(it)
‘i‘
>>> next(it)
‘e‘
>>> next(it)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
StopIteration
>>> string = ‘junjie‘
>>> it = iter(string)
>>> while True:
...     try:
...             each = next(it)
...     except StopIteration:
...             break
...     print(each)
...
j
u
n
j
i
e
>>> for each in string:
...     print(each)
...
j
u
n
j
i
e

魔法方法

>>> class Fibs:
...     def __init__(self):
...             self.a = 0
...             self.b = 1
...     def __iter__(self):
...             return self
...     def __next__(self):
...             self.a,self.b = self.b,self.a+self.b
...             return self.a
...
>>> for each in fibs:
...     if each < 20:
...             print(each)
...     else:
...             break
...
1
1
2
3
5
8
13
>>> class Fibs:
...     def __init__(self,n=10):
...             self.a = 0
...             self.b = 1
...             self.n = n
...     def __iter__(self):
...             return self
...     def __next__(self):
...             self.a,self.b = self.b,self.a + self.b
...             if self.a > self.n:
...                     raise StopIteration
...             return self.a
... >>> fibs = Fibs()
>>> for each in fibs:
...     print(each)
...
1
1
2
3
5
8
时间: 2024-10-29 19:12:16

Python--30 迭代器的相关文章

python——iterator迭代器

Iterator(迭代器)模式又称Cursor(游标)模式,用于提供一种方法顺序访问一个聚合对象中各个元素, 而又不需暴露该对象的内部表示.或者这样说可能更容易理解:Iterator模式是运用于聚合对象的一种模式,通过运用该模式,使得我们可以在不知道对象内部表示的情况下,按照一定顺序(由iterator提供的方法)访问聚合对象中的各个元素. A. 一个类里面,如果实现了  __iter__ 这个函数, 那这个类就是 “可迭代的” B. 如果它还实现了 next ( self ) ,那它就称为  

python 【迭代器 生成器 列表推导式】

python [迭代器  生成器  列表推导式] 一.迭代器 1.迭代器如何从列表.字典中取值的 index索引 ,key for循环凡是可以使用for循环取值的都是可迭代的可迭代协议 :内部含有__iter__方法的都是可迭代的迭代器协议 :内部含有__iter__方法和__next__方法的都是迭代器 print(dir([1,2,3])) lst_iter = [1,2,3].__iter__() print(lst_iter.__next__()) print(lst_iter.__ne

Python 生成器&迭代器

Python 生成器 带有 yield 的函数在 Python 中被称之为 generator(生成器),用斐波那契数列: def fab(max):     n, a, b = 0, 0, 1     while n < max:         yield b         a, b = b, a + b         n = n + 1 执行: 1 2 3 4 5 6 7 8 9 >>> for n in fab(5):     print n 1 1 2 3 5 简单地

Python(30)_统计输入的字符串有多少数字

#-*-coding:utf-8-*- ''' 统计用户输入的字符串中有几个数字 ''' # numList = ['0','1','2','3','4','5','6','7','8','9'] s = input('请输入字符串:') count = 0 for i in s: if i in numList: count +=1 print(count) Python(30)_统计输入的字符串有多少数字 原文地址:https://www.cnblogs.com/sunnybowen/p/1

python之迭代器与生成器

python之迭代器与生成器 可迭代 假如现在有一个列表,有一个int类型的12345.我们循环输出. list=[1,2,3,4,5] for i in list: print(i) for i in 12345: print(i) 结果: Traceback (most recent call last): File "C:/Pycham/生成器与迭代器/test1.py", line 6, in <module> for i in 12345: TypeError:

Python 30分钟快速入门指南

学习地址 中文版:Python 30分钟入门指南 英文版:Learn X in Y minutes 学习时间 2019/03/10 19:00 - 19:32,多用了2分钟. 原文地址:https://www.cnblogs.com/huerxiong/p/10506664.html

python之 迭代器,生成器

什么叫跌代: 可以将某个数据集合内的数据一个一个挨着取出来就叫做跌代. 迭代器协议: 可以被跌代要满足的要求叫做可迭代协议,可迭代对象必须提供一个next的方法,执行该方法要么返回跌代中的下一项,要么就引起一个StopIteration异常,以终止跌代(跌代只能往后走,而不能往前退) python中的for循环: for循环的本质就是遵循迭代器协议去访问对象,for循环可以遍历(字符串,列表,元祖,字典,集合,文件对象)这些对象都是不可迭代对象,只不过在for循环时,调用了他们内部的-iter-

python基础----迭代器、生成器、协程函数

一.什么是迭代器协议 1.迭代器协议是指:对象必须提供一个next方法,执行该方法要么返回迭代中的下一项,要么就引起一个StopIteration异常,以终止迭代 (只能往后走不能往前退) 2.可迭代对象:实现了迭代器协议的对象(如何实现:对象内部定义一个__iter__()方法) 3.协议是一种约定,可迭代对象实现了迭代器协议,python的内部工具(如for循环,sum,min,max函数等)使用迭代器协议访问对象. 二,为什么要用迭代器 优点: 1:迭代器提供了一种不依赖于索引的取值方式,

Python学习-迭代器和生成器

1 '''.在Python中,这种一边循环一边计算的机制,称为生成器:generator. 2 要创建一个generator,有很多种方法. 3 可以通过next()函数获得generator的下一个返回值''' 4 5 def fib(max): 6 n, a, b = 0, 0, 1 7 while n < max: 8 #print(b) 9 yield b 10 a, b = b, a + b 11 n = n + 1 12 return 'done' 13 14 15 #_*_codi

python函数-迭代器和生成器

一 迭代器 1.1 认识迭代器 什么是迭代 什么是迭代器 迭代器 如何从列表.字典中取值的 index索引 ,key for循环 凡是可以使用for循环取值的都是可迭代的 可迭代协议 :内部含有__iter__方法的都是可迭代的 迭代器协议 :内部含有__iter__方法和__next__方法的都是迭代器 一个生成器 只能取一次生成器在不找它要值的时候始终不执行当他执行的时候,要以执行时候的所有变量值为准 l = [1,2,3] while True: lst = l.__iter__() ##