Python中的for
来源:互联网 发布:猪八戒淘宝直播 编辑:程序博客网 时间:2024/06/14 17:10
for循环是我们写C、写java的人所最熟悉不过的循环语句,但是在Python中, for语句与我们平时所接触的有所不同。
for语句提供了Python中最强大的循环结构。它可以遍历序列成员,可以用在列表解析和生成器表达式中,它会自动地调用迭代器的next()方法,捕获StopIteration异常并结束循环(所有这一切都是在内部发生的)。
一、一般语法:
for循环会访问一个可迭代对象(例如序列或是迭代器)中的所有元素,并在所有条目都处理过后结束循环,它的语法如下:
for iter_var in iterable: suite_to_repeat
每次循环,iter_var迭代变量被设置为可迭代对象(序列、迭代器或其他支持迭代的对象)的当前元素,提供给suite_to_repeat语句块使用。
二、用于序列类型:
本节中,我们将学习用for循环迭代不同的序列对象。样例将涵盖字符串、列表及元组。(对列表与元组不熟悉的可以再重新看看这部分内容)
>>>for eachLetter in 'Names':>>> print 'current letter:',eachLetter>>>current letter:Ncurrent letter:acurrent letter:mcurrent letter:ecurrent letter:s
当迭代字符串时,迭代变量只会包含一个字符(长度为1的字符串)。但这并不常用。在字符串里查找字符时,程序员往往使用 in来测试成员关系,或者使用string 模块中的函数以及字符串方法来检查子字符串。
看到单个的字符在一种情况下有用,即在通过 print 语句调试for 循环中的序列时,如果你在应该看到字符串的地方发现的却是单个的字符,那么很有可能你接受到的是一个字符串,而不是对象的序列。
迭代序列有三种基本方式:
1、通过序列项迭代
>>>nameList = ['Walter',‘Nicole’,'Steven','Henry'] >>>for eachName in nameList:>>> print eachName,"Lim">>>Walter LimNicole LimSteven LimHenry Lim
在上面的例子中,我们迭代一个列表。每次迭代,eachName变量都被设置为列表中特定某个元素,然后我们在代码块中打印出这个变量。
2、通过序列索引迭代
>>>nameList = ['Cathy','Terry','Joe','Heather',‘Lucy’]>>>for nameIndex in range(len(nameList)):>>> print "Liu,",nameList[nameIndex]>>>Liu, CathyLiu,TerryLiu,JoeLiu,HeatherLiu,Lucy
我们没有迭代元素,而是通过列表的索引迭代。
这里我们使用了内建的len() 函数获得序列长度,使用range()函数(我们将在下面详细讨论它)创建了要迭代的序列。
>>>len(nameList)5>>>range(len(nameList))[0,1,2,3,4]
使用range() 我们可以得到用来迭代nameList的索引数列表;使用切片/下标操作符([ ]),就可以访问对应的序列对象。
3、使用项和索引迭代
两全其美的办法是使用内建的 enumerate() 函数,它是Python2.3的新增内容。代码如下:
>>>nameList = ['Donn','Shirley','Ben','Janice','David','Yen','Wendy']>>>for i, eachLee in enumerater(nameList):>>> print "%d %s Lee" % (i+1,eachLee)>>>1 Donn Lee2 Shirley Lee3 Ben Lee 4 Janice Lee5 David Lee6 Yen Lee7 Weny Lee
使用迭代器做for循环的代码与使用序列条目几乎完全相同。事实上在大多情况下,你无法分辨出你迭代的是一个序列还是迭代器,因此,这就是为什么我们再说要遍历一个迭代器时,实际上可能我们只的是要遍历一个序列,迭代器,或是一个支持迭代的对象(它有next()方法)。
三、range()函数
我们前面介绍Python的for循环的时候提到过它是一种迭代的循环机制。Python同样提供一个工具让我们在传统伪条件设置下使用for循环,例如从一个数字开始计数到另一个数字,一旦到达最后的数字或者某个条件不再满足就立刻退出循环。
内建函数 range() 可以把类似foreach的for循环变成你更加熟悉的语句。例如从0到10计数,或者从0到10一次递增5.
1、range() 的完整语法
Python提供了两种不同的方法来调用range()。完整语法要求提供两个或三个整型参数:
range( start, end, step-1 )
range()会返回一个包含所有k的列表,这里start<=k<end, 从 start 到 end , k 每次递增 step .step 不可以为零,否则将发生错误。
>>>range(2, 19, 3)[2, 5, 8, 11, 14, 17]
如果只给定两个参数,而省略 step ,step 就使用默认值 1 。
>>>range(3, 7)[3, 4, 5, 6]
0 0
- python中的for循环
- python for 中的range
- python中的for...else...
- python中的for循环
- python中的for循环
- Python中的for语句
- Python中的for
- python中的for
- python中的for语句
- python 中的 for 迭代
- python中的for循环问题
- Python 中的for-else用法
- python中的if、while、for
- python中的for...else的使用方法
- python 中的迭代 for zip 字典
- 关于Python中的for循环控制语句
- 关于Python中的for循环控制语句
- 关于Python中的for循环控制语句
- 编程算法(python)
- ipython notebook安装
- 单例的PCH宏定义
- android 调用百度地图SDK,出现 not found the liblocSDK4d.so 解决方法
- 那些年用node接入微信走过的坑之(三)---微信事件监听
- Python中的for
- 字符串分割函数
- RxAndroid
- 利用DCMTK将DCM图像像素数据转换为Mat数据
- java如何退出所有递归
- Largest Rectangle in Histogram
- 解决eclipse building workspace慢的情况
- Eclipse中Maven工程缺少Maven Dependencies
- Netty的入门-UDP协议开发