以直接作用于for循环的数据类型有以下几种:
一类是集合数据类型,如list、tuple、dict、set、str等;
一类是generator,包括生成器和带yield的generator function 。
这些可以直接作用于for循环的对象统称为可迭代对象:Iterable 。
2.判断是否可以迭代
可以使用isinstance()判断一个对象是否是Iterable对象:
运行结果:
而生成器不但可以作用于for循环,还可以被next()函数不断调用并返回下一个值,直到最后抛出StopIteration错误表示无法继续返回下一个值了 。
相关推荐:《Python视频教程》
3.迭代器
可以被next()函数调用并不断返回下一个值的对象称为迭代器:Iterator 。
运行结果:
4.iter()函数
生成器都是Iterator对象,但list、dict、str虽然是Iterable,却不是Iterator 。
把list、dict、str等Iterable变成Iterator可以使用iter()函数:
运行结果:
总结
·凡是可作用于for循环的对象都是Iterable类型;
·凡是可作用于next()函数的对象都是Iterator类型
·集合数据类型如list、dict、str等是Iterable但不是Iterator,不过可以通过iter()函数获得一个Iterator对象 。
·目的是在使用集合的时候,减少占用的内容 。
相关推荐:
三分钟看懂什么是Python生成器
用python写程序,用用迭代法求x=a**(1/2)(a的平方根)?def sqrt_newton(num):
x=sqrt(num)
y=num/2.0
count=1
while abs(y-x)0.00001:
print count,y
count+=1
y=((y*1.0)+(1.0*num)/y)/2.0000
return y
希望 是你想要的结果 。
Python用迭代(yield)和递归解决八皇后问题
国际象棋的皇后行走具有最高的灵活性,可以横、竖、斜共八个方向无限步行走 。你需要将国际象棋8个皇后放在棋盘上,条件是任何一个皇后都不能威胁其他皇后,即任何两个皇后都不能吃掉对方 。
分析:在棋盘的第一行尝试为第一个皇后选择一个位置,再在第二行尝试为第二个皇后选择一个位置,依次类推 。在发现无法为一个皇后选择合适的位置后,回溯到前一个皇后 , 并尝试为它选择另一个位置 。当八个皇后都放在棋盘上时即得到一种解 。
用元组(其他序列也可以)表示可能的解(或一部分),例如(1 , 3,5)表示当前共摆放了三个皇后 , 第一个皇后在1行1列,第二个皇后在2行3列,第三个皇后在3行5列 。
当前状态state,下一个皇后在下一行的next_x位置,根据皇后的行走规则,如果已有的皇后可以吃掉下一个皇后,则表示有冲突,否则没有 。
函数conflict定义:接受用状态元组表示的既有皇后的位置,并确定下一个皇后的位置是否会导致冲突 。
参数next_x表示下一个皇后的水平位置(x 坐标,即列),而next_y为下一个皇后的垂直位置(y 坐标,即行) 。这个函数对既有的每个皇后执行简单的检查:如果下一个皇后与当前皇后的 x 坐标相同或在同一条对角线上,将发生冲突,因此返回True ;如果没有发生冲突,就返回False。
abs(state[i] - next_x) in (0, next_y - i)表示两个皇后的水平距离为0或等于垂直距离时为真、否则为假 。
关于python迭代法函数和python迭代算法的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息 , 记得收藏关注本站 。
推荐阅读
- python中列表元素换行,python列表元素换行输出
- 怎么看华为手机是安卓机,怎么看华为手机的型号
- 关于html5连续播放几段视频的信息
- 模拟车越野游戏大全,模拟越野汽车游戏
- python进制转换函数 python进制转换函数代码
- u盘中的文件怎么加密软件,u盘中的文件怎么加密软件下载
- 益智游戏29,益智游戏2048
- 辽宁保税跨境电商如何选择,保税区跨境电商怎么做
- 从大到小排序c语言函数 从大到小排序c语言函数怎么表示