您的位置:首页 > 编程语言 > Python开发

Python学习(8)--for循环

2017-11-16 21:44 155 查看
1.for循环

    当我们需要重复去执行一个操作序列时,常常就需要用到for循环,循环的次数由判断条件决定,当判断条件返回false时,判断终止,循环结束.以下是python中的for循环结构:



      以上代码就是一个for循环,其中x是迭代变量,在循环过程中序列会将每一个元素赋给x然后打印出来,for循环执行过程中的代码段与if语句中执行的代码段一样,都是需要有一个Tab缩进符,以表示此语句属于for循环代码段,当循环迭代把序列中的每一个元素都遍历完成后,循环就结束了,以下是代码执行结果:



2.range函数

      当我们使用for循环的时候,常常需要做的是控制for循环的次数,比如我们做从1到100的相加运算,需要做100次的加操作,相应的需要循环100次,难道我们要创建一个值为1到100的序列,然后把他们相加吗?这样做不仅繁琐,而且容易出错.python为我们提供了一个生成序列的函数,就是range()函数,比如range(100),python会为我们创建一个长度为100,值从0~99的一个序列,如果我们想让1~100的数相加求和,只需要range(101),然后for循环,让0~100的数相加求和即可.代码如下:

a=range(10)
print(a[0])
print(a[1])
print(a[2])
print(a[3])
print(a[4])
print(a[5])
print(a[6])
print(a[7])
print(a[8])
print(a[9])


运行结果如下:



可以看到我们通过range(10),创建了一个长度为10,值依次为0~9序列,在编程中,如果我们想控制for循环的循环次数,用这样的方法无疑事半功倍.以下是一个用range函数控制循环次数的例子:

for x in range(10):
print(x,"hello world")


打印结果如下:



3.range函数的拓展功能

range()函数实际上可以使用三个参数来创建序列,即range(i,j,N),在python3中如果这三个参数都写,则会创建一个长度为j-i,步长为N的序列,i和j分别指定了序列的初始值和终止值,这个序列的下标是从0~j-i-1,元素为i~j-1,一共j-i个元素,N为步长,在这里我们又提到了步长这个概念,这个步长的含义其实和之前的步长是一致的,即每间隔N-1个序列元素取一个元素,来作为新序列的元素.代码如下:

a=range(2,10,2)
for x in range(2,10,2):
print(x)

如上代码,a=range(2,10,2),我们开始创建了一个长度为8,值为2~9的一个序列,即创建出来的临时序列值为:2,3,4,5,6,7,8,9.由于步长为2,每隔一个元素值取一个,获取到2,4,6,8,所以序列的最终元素值为2,4,6,8.长度为4.最终为a[0]=2,a[1]=4,a[2]=6,a[3]=8,程序结果最后如下:



需要的注意的是,range()函数只能创建元素为整数的序列.

4.通过下标迭代列表

当我们需要迭代一个序列的时候可以像下面的代码这样做:

s=["H",'e','l','l','o']
for x in s:
print(x)

即把序列中的每一个元素赋值给一个临时的迭代变量,然后对迭代变量进行操作.但是这样做不够灵活,可能有时候我们只需要迭代其中几个元素,比如我们想迭代下标为偶数的元素,这种情况下,我们可以通过下标来迭代序列.

无论是通过迭代变量,还是下标来迭代序列,我们需要知道的是,迭代的次数都是一样的,那就是序列的长度有多长就迭代多少次,序列长度为len(s),range(len(s))创建的序列就是序列s的下标序列,代码如下:

s=["H",'e','l','l','o']
for x in range(len(s)):
if x%2==0:
print(s[x])

如程序所示,range(len(s))就是s的下标序列[0,1,2,3,4],s[x]对应的就是迭代得到的每个元素值,通过条件判断表达式x%2==0,就能获取到下标为偶数的下标值,打印结果如下:



5.for循环迭代字典

之前我们提到字典是不属于序列的,因为字典是无序的键值对,其实我们可以把字典转化为序列后再迭代遍历,这时候就用到了字典的一个函数,items(),代码如下:

d1={'name':'lisi','age':12,'sex':'man'}
print(d1.items())


结果如下图:



       如上代码,通过字典的items()方法,创建了一个列表序列,其中每个元素又是一个元组序列,之前我们学过用元组为变量赋值,如下代码:

k,v= ('age', 12)
print(k)
print(v)


结果如下图:



如上代码就是将元组('age',12)的值依次赋值给k,v,在遍历以元组作为元素的列表的时候,也用到了这个小技巧,如下代码所示:

d1={'name':'lisi','age':12,'sex':'man'}
for k,v in d1.items():
print(k,v)
运行结果如下:



如上代码所示,对字典的items()方法创建的列表元素进行迭代,取出每一个字典元素后,用之前的小技巧,将其赋值给临时迭代变量k,v后,并打印.

最近课设很多,研究生这学期也过了一大半,感觉对模式识别,图像处理这方面还没入门,要学的东西还很多,继续努力吧,北工大菜鸟.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  python 编程