【学习】使用生成函数实现可迭代对象

实现一个可迭代对象的类,它能迭代出给定范围内所有素数

实现方法:将该类的__iter__方法实现生成器函数,每次yield返回一个素数

 1 class PrimeNumbers:
 2     def __init__(self,start,end):
 3         self.start = start
 4         self.end = end
 5
 6     def isPrimeNum(self,k):
 7         if k < 2:
 8             return False
 9         for i in xrange(2,k):
10             if k % i == 0:
11                 return False
12
13         return True
14
15     def __iter__(self):
16         for k in xrange(self.start,self.end + 1):
17             if self.isPrimeNum(k):
18                 yield k
19
20 if __name__ == "__main__":
21     for x in PrimeNumbers(1,100):
22         print x
时间: 2024-10-31 10:30:45

【学习】使用生成函数实现可迭代对象的相关文章

Python中的可迭代对象与迭代器对象

刚刚学习Python,对“可迭代对象”和"迭代器对象"的个人理解,不知道对不对. 1.几个概念 1.迭代工具:包括for循环.列表解析.in成员关系测试.....等等在内的,用于依次访问可迭代对象(容器)内元素的操作(?). 2.迭代器对象:具有__next__()方法的对象.该方法能够自动返回下一个结果,当到达序列结尾时,引发StopIteration异常. 3.可迭代对象:具有__iter__()方法的对象.该方法可获取其迭代器对象. 2.迭代过程(以for循环为例) for循环开

学习7: 列表生成式,生成器,迭代器,可迭代对象

1) 列表生成式,即创建列表的方式 列表生成式,这里是中括号[] >>> [x*x for x in range(0,10)] [0, 1, 4, 9, 16, 25, 36, 49, 64, 81] >>> [x * x for x in range(1, 11) if x % 2 == 0] [4, 16, 36, 64, 100] >>> [m + n for m in 'ABC' for n in 'XYZ'] ['AX', 'AY', 'AZ

王亟亟的Python学习之路(七)-date,continue,迭代对象,生成器

转载请注明出处:王亟亟的大牛之路 大多数的语言都提供了时间操作的相应类,诸如java的java.util.Date,java.util.Calendar等等, Python中是time 和 calendar . 首先需要导包import time; 然后就可以使用了,mTime= time.time()那结果呢? 1448004021.1337154 (而且这个数字还继续在变) WHY? 用ticks计时单位返回从12:00am, January 1, 1970(epoch) 开始的记录的当前操

Python学习-解压可迭代对象赋值给多个变量

解压序列赋值给多个对象 任何的序列(或者是可迭代对象)可以通过一个简单的赋值语句解压并赋值给多个变量.唯一的前提就是变量的数量必须跟序列元素的数量是一样的. >>> data = ['abcd','a',1,2,(3,4)]>>> a,b,c,d,e = data>>> a,b,c,d,e('abcd', 'a', 1, 2, (3, 4))>>> a,b,c,d,(e,f) = data>>> f4>>

python学习--如何实现可迭代对象(itearable)和迭代器(iterator)

关于可迭代对象Iterable 和迭代器对象iterator 可迭代对象:可以直接作用于for循环的对象统称为可迭代对象:Iterable. 可迭代对象包含一个__iter__方法,或__getitem__方法,其中__iter__方法会返回一个迭代器iterator. 可迭代对象一类是集合数据类型,如list,tuple ,dict, set,str,  另一类可迭代对象是生成器generator. 迭代器对象:可以作用于next()函数的对象都是迭代器对象.迭代器对象必须实现__next__

第一章 1.2 解压可迭代对象赋值给多个变量

问题:如果一个可迭代对象的元素个数超过变量个数时,会抛出一个 ValueError . 那么怎样才 能从这个可迭代对象中解压出N个元素出来? 解决方案:Python的星号表达式可以用来解决这个问题.比如,你在学习一门课程,在学期末的时 候, 你想统计下家庭作业的平均成绩,但是排除掉第一个和后一个分数.如果只有四 个分数,你可能就直接去简单的手动赋值, 但如果有24个呢?这时候星号表达式就派上 用场了: def drop_first_last(grades): first, *middle, la

Python 迭代对象、迭代器、生成器详解

在了解Python的数据结构时,容器(container).可迭代对象(iterable).迭代器(iterator).生成器(generator).列表/集合/字典推导式(list,set,dict comprehension)众多概念参杂在一起,难免让初学者一头雾水,本文将一一为大家进行介绍,希望对大家学习python有所帮助. 容器(container) 容器是一种把多个元素组织在一起的数据结构,容器中的元素可以逐个地迭代获取,可以用 in ,  not in 关键字判断元素是否包含在容器

python当中的 可迭代对象 迭代器

学习python有一段时间了,在学习过程中遇到很多难理解的东西,做一下总结,希望能对其他朋友有一些帮助. 完全是个人理解,难免有错,欢迎其他大神朋友们批评指正. 1 迭代 什么是迭代呢??我们可以这样理解,一个容器类型的数据,比如 列表[ ]  .元组 () 和 字典 { }, 我们可以把这样类型的数据放入for temp in [1,2,3] 当中,temp 被一次一次的赋值成为后面容器内数据,然后我们拿到temp进行一些想做的事情.那么for 循环中自动的帮我们把数据一次一次的取出来,可以理

Python学习笔记__3.2章 迭代

# 这是学习廖雪峰老师python教程的学习笔记 1.概览 如果给定一个list或tuple,我们可以通过for循环来遍历这个list或tuple,这种遍历我们称为迭代(Iteration). 当然,不止 list 和 tuple 可以迭代.只要是可迭代对象,无论有无下标,都可以迭代都.包括dict .str .generator 在Python中,迭代是通过for ... in来完成的. 1.1.字典的迭代 # 定义一个字典 d = {'a': 1, 'b': 2, 'c': 3} 迭代 字典