[Python]小甲鱼Python视频第048课(魔法方法:迭代器) )课后题及参考解答
生活随笔
收集整理的这篇文章主要介绍了
[Python]小甲鱼Python视频第048课(魔法方法:迭代器) )课后题及参考解答
小编觉得挺不错的,现在分享给大家,帮大家做个参考.
# -*- coding: utf-8 -*-
"""
Created on Sun Mar 24 20:24:02 2019@author: fengs
""""""0. 请用你的话解释一下“迭代”的概念?重复相同的操作,将上一次操作的输出时的状态当次本次操作的输入状态1. 迭代器是一个容器吗?不是,迭代是一个计算得出后续状态的过程(__next__()),容器是已经存在,去取就行。2. 迭代器可以回退(获取上一个值)吗?不能3. 如何快速判断一个容器是否具有迭代功能?isinstance(a,itera)是否有 __iter__()和 __next__() 魔法方法4. for 语句如何判断迭代器里边已经取空了?接管了迭代已经停止的异常,遇到迭代停止异常就认为是取空5. 在 Python 原生支持的数据结构中,你知道哪一个是只能用迭代器访问的吗.无序的集合
""""""
0. 用 while 语句实现与以下 for 语句相同的功能:
for each in range(5):print(each)"""
iter_range = iter(range(5))
while True:try:each = next(iter_range);print(each)except StopIteration:break"""
1. 写一个迭代器,要求输出至今为止的所有闰年。如
>>> leapYears = LeapYear()
>>> for i in leapYears:if i >=2000:print(i)else:break2016W
2012
2008
2004
2000
"""
import time
class LeapYear():def __init__(self):self.year = time.localtime().tm_year#print(self.year)def isLeap(self,year):if (year % 4 == 0 and year%100 != 0 ) or (year % 400 == 0):return Trueelse:return Falsedef __iter__(self):return selfdef __next__(self):while True:if self.isLeap(self.year) == False:self.year -= 1else:breaktmp = self.year;self.year -= 1return tmp;print('---------------------------------')
leapYears = LeapYear()
for i in leapYears:if i >=2000:print(i)else:break
print('---------------------------------')"""
2. 要求自己写一个 MyRev 类,功能与 reversed() 相同(内置函数 reversed(seq) 是返回一个迭代器,是序列 seq 的逆序显示)。例如:
>>> myRev = MyRev("FishC")
>>> for i in myRev:print(i, end='')ChsiF
"""class MyRev():def __init__(self,value):self.value = value;self.idx = len(self.value)def __iter__(self):return selfdef __next__(self):self.idx -= 1if self.idx >= 0:return self.value[self.idx]else:raise StopIterationmyRev = MyRev("FishC")
print('------------------')
for i in myRev:print(i, end='')
print('\n------------------')
转载于:https://www.cnblogs.com/alimy/p/10590751.html
总结
以上是生活随笔为你收集整理的[Python]小甲鱼Python视频第048课(魔法方法:迭代器) )课后题及参考解答的全部内容,希望文章能够帮你解决所遇到的问题。
- 上一篇: Java内存管理-掌握虚拟机类加载机制(
- 下一篇: python3 requests 库