python入门笔记--循环(for...range\enumerate\zip)、列表推导

来源:互联网 发布:ubuntu ssh 远程登录 编辑:程序博客网 时间:2024/05/16 16:07

一、循环结构

>>> range(1,5) #代表从1到5(不包含5)

[1, 2, 3, 4]
>>> range(1,5,2) #代表从1到5,间隔2(不包含5)
[1, 3]
>>> range(5) #代表从0到5(不包含5)
[0, 1, 2, 3, 4]

1.for  i  in  range(10)使用序列的每个元素进行循环


或直接读取

>>> for i in 'abcd':print iabcd
for i in ['abc','def']:print iabcdef

>>> a=['abc','def']>>> for i in range(len(a)):print a[i]abcdef


2.for  i  in  range(0,len(q),2)使用序列的下标进行循环


3.for (index,char) in enumerate(S)同时使用下标和元素进行循环


4.for (a,b,c) in zip(ta,tb,tc):从多个等长序列中取一个元素作为新序列


二、循环结构原理:自动调用循环对象的next方法。

循环对象--for自动调用循环对象的next方法,直到出现StopIteration停止循环

循环对象是这样一个对象,它包含有一个next()方法(__next__()方法,在python 3x中), 这个方法的目的是进行到下一个结果,而在结束一系列结果之后,举出StopIteration错误。

当一个循环结构(比如for)调用循环对象时,它就会每次循环的时候调用next()方法,直到StopIteration出现,for循环接收到,就知道循环已经结束,停止调用next()。

如循环对象:f=open(),返回的实际上是一个循环对象,包含有next()方法。等于for结构自动调用next()方法,将该方法的返回值赋予给line。


三、生成器--用户自己生成一个循环对象

和函数定义类似,只是在return的地方改为yield。当生成器遇到一个yield时,会暂停运行生成器,返回yield后面的值。当再次调用生成器的时候,会从刚才暂停的地方继续运行,直到下一个yield。


四、列表推导--快速生成列表

列表推导(List comprehension)的作用是为了更方便地生成列表(list)

如一个list变量的元素均为数字,如果需要将每个元素的值乘以2并生成另外一个list

常规方法:


使用列表推导


0 0
原创粉丝点击