大家好,欢迎来到IT知识分享网。
摘要:大多数人从C/C++系列语言转移到python语言的过程中,会在循环方式上长期存在很大的质疑,毕竟这二者的循环类别有很大的不同。书写循环的时候,很可能会疑问,什么对象可以拿来循环,什么对象不可循环?本文主要探讨python中的循环,并对比和C语言中循环的不同。
1.C和python循环的不同
大多数人从C/C++系列语言转移到python语言的过程中,会在循环方式上长期存在很大的质疑,毕竟这二者的循环类别有很大的不同。
在C语言中,我们这样书写循环:
for(i=0;i<10;i++){
sum+=i;
}
在python中,我们这样写:
for i in range(10):
sum+=i;
是不是很不习惯?如果需要按照2递增呢?
C语言:
for(i=0;i<10;i+=2){
sum+=i;
}
python:
for i in range(0,10,2):
sum+=i
Note:C语言中,我们用的是增量的方式,循环有三要素:初始值、增量、循环边界;python中,循环仅仅需要一个——可迭代类型。
2.迭代器和iter()函数
python的迭代无缝支持序列对象,还允许迭代非序列对象但表现出序列行为的对象——字典的key、文件的行等等。
从根本上说,迭代器就是一个有next方法的对象,而不是通过索引来计数。当next都获取完毕的时候,引发StopIteration异常,不表示错误发生,而表示调用完毕。
> mytuple=(12, 'xyz',34)
> i=iter(mytuple)
> i.next()
12
> i.next()
'xyz'
> i.ntext()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: 'tupleiterator' object has no attribute 'ntext'
可见,迭代器内部有一个隐形的不可见的指针,指向next的下一个元素。任何for或者while循环实际上是通过迭代类型来实现的。
上文中,我们观看了序列类型用作迭代器的情况,下面,我们看看另外两种数据类型用作迭代器的情况:
2.1字典
字典的迭代器会遍历它的key,for eachkey in mydic.keys() 可以缩写:for eachekey in mydic.
2.2文件
文件对象生成器会自动调用readline方法
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/26011.html