python 循环解惑[亲测有效]

python 循环解惑[亲测有效]摘要:大多数人从C/C++系列语言转移到python语言的过程中,会在循环方式上长期存在很大的质疑,毕竟这二者的循环类别有很大的不同。书写循环的时候,很可能会疑问,什么对象可以拿来循环,什么对象不可循环?本文主要探讨python中的循环,并对比和C语言中循环的不同。1.C和python循环的不同大多数人从C/C++系列语言转移到python语言的过程中,会在循环方式上长期存在很大的

大家好,欢迎来到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

(0)
上一篇 2023-04-10 10:00
下一篇 2023-04-16 15:00

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

关注微信