range()
在Python中,for循环后的in跟随一个序列的话,循环每次使用的序列元素,而不是序列的下标。
我们继续开发range的功能,以实现下标对循环的控制:
s = 'abcdefghj'
for i in range(0,len(s),3):
print(i,s[i])
在该例子中,我们利用len()函数和range()函数,用i作为S序列的下标来控制循环。在range函数中,分别定义上限,下限和每次循环的步长。这就和C语言中的for循环相类似了。
enumerate()
利用enumerate()函数,可以在每次循环中同时得到下标和元素:
s = 'abcdefghj' for (seq,char) in enumerate(s): print(seq) print(char)
实际上,enumerate()在每次循环中,返回的是一个包含两个元素的定值表(tuple),两个元素分别赋予seq和char
zip()
如果你多个等长的序列,然后想要每次循环时从各个序列分别取出一个元素,可以利用zip()方便地实现:
temp_a = (1,2,3)
temp_b = ['a',2,3]
temp_c = (1,'oliver',3)
for (a,b,c) in zip(temp_a,temp_b,temp_c):
print(a,b,c)
每次循环时,从各个序列分别从左到右取出一个元素,合并成一个tuple,然后tuple的元素赋予给a,b,c
屏幕打印结果如下: