4.2 遍历
遍历是指对整个数据集合的每个元素,都访问一次,并且只访问一次。
例如这是一个列表的遍历:
a=[0]*10print(a)for i in range(10): a[i]=iprint(a)
整个列表的元素一共有10个:a[0],a[1],a[2],…,a[7],a[8],a[9]。
上面的循环通过下标i的变化(从0变到9),把整个列表遍历了一遍,按下标从小到大的顺序访问列表的元素(a[0],a[1]这样依次访问),并赋值给元素——赋的值是该元素的下标。循环后的结果:a[0]=0,a[1]=1,a[2]=2…a[9]=9。
接下来,我们打印一下整个列表。如果你直接这样写:print(a)那么你可以看到将打印[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]。如果用别的格式打印列表,必须使用循环:
a=[0]*10for i in range(10): a[i]=i print("a["+str(i)+"]="+str(a[i]))print(a)#使用while,每个元素赋予偶数i=0while i<10: a[i]=2*i+2 i=i+1print(a)
这个循环跟上面的类似,遍历整个列表,然后依次打印。
并且这里要注意一个地方,就是循环条件:i<=9,如果这里没有写好,就很容易造成a[i]的下标越界。例如写成i<=10,那么就会访问到a[10]这个元素,而这个元素不存在,产生越界。
遍历列表可以通过下标来完成,至于下标从小到大,还是从大到小,那就看具体情况和编程的习惯了。我们要掌握如何控制整个遍历的过程。将来我们还会学习到用迭代器来遍历一个集合。
上面遍历的例子,都是已知列表的长度,假如并不能在运行之前就知道列表的长度,该怎么办呢?那么就要使用len函数来算出长度:
a=[0]*10for i in range(len(a)): a[i]=i print("a["+str(i)+"]="+str(a[i]))#使用while,每个元素赋予奇数i=0while i<len(a): a[i]=2*i+1 i=i+1print(a)
上面的代码使用了len(a)代替了之前的10,这种写法更通用,就算不知道a列表的长度,也可以遍历列表。例如打印列表每一个元素:
c=[5,7,8,45,4,7,4,95,478,4,1,2,16,15,58,59,54,54,32]for i in range(len(c)): print("c["+str(i)+"]:"+str(c[i]))
如果上面的c的列表个数,要手动去数的话,那就没有操作性了。有些时候必须使用len。
如果遍历的时候,不需要下标,那么有更简便的遍历方式 :
c=[5,7,8,45,4,7,4,95,478,4,1,2,16,15,58,59,54,54,32]for i in c: print(i)
每次循环i的值直接就是序列c一个元素的值,从下标0开始依次取值。这种遍历没有下标信息。此种遍历必须使用for,while无法在不用下标的情况下遍历列表。下面是一个不痛过过下标查找列表最大值的例子:
c=[5,7,8,45,4,7,4,95,478,4,1,2,16,15,58,59,54,54,32]max=c[0] #默认第一个值是最大for k in c: print("当前取出",k,",当前最大值",max) if k>max: print("当前最大值从",max,"替换成",k) max=k print(max)