for 循环提供了python中最强大的循环结构(for循环是一种迭代循环机制,而while循环是条件循环,迭代即重复相同的逻辑操作,每次操作都是基于上一次的结果进行的)for循环可以遍历任何序列的项目,如一个列表或者一个字符串。
for循环的语法格式如下:
for iterating_var in sequence:
statements(s)
for循环实例: 在Python中,单引号和双引号都可以用来表示一个字符串,是相同的。
msg="he py"
for i in (msg):
print(i)
out:
h
e
p
y
fruits = ['banana', 'apple', 'mango']
for fruit in fruits: # 第二个实例
print (fruit)
out:
banana
apple
mango
2通过序列索引迭代
fruits = ['banana', 'apple', 'mango']
for index in range(len(fruits)):
print '当前水果 :', fruits[index]
out:
当前水果 : banana
当前水果 : apple
当前水果 : mango
3、range()函数
需要遍历数字序列,可以使用内置range()函数。它会生成数列。range()语法:
range(start,end,step=1) #顾头不顾尾
-
range(10):
默认step=1,start=0
,生成可迭代对象,包含[0, 1, 2, 3, 4, 5, 6, 7, 8, 9] - range(1,10):指定start=1,end=10,默认step=1,生成可迭代对象,包含[1, 2, 3, 4, 5, 6, 7, 8, 9]
- range(1,10,2):指定start=1,end=10,step=2,生成可迭代对象,包含[1, 3, 5, 7, 9]
for i in range(5,9) :
print(i)
out:
5
6
7
8
结合range()和len()函数以遍历一个序列的索引:
a = ['Google', 'Baidu', 'Runoob', 'Taobao', 'QQ']
for i in range(len(a)):
print(i, a[i])
out:
0 Google
1 Baidu
2 Runoob
3 Taobao
4 QQ
4、enumerate函数
enumerate的意思即为枚举,列举。enumerate的作用就是对可迭代的数据进行标号并将其里面的数据和标号一并打印出来。
enumerate(iterable, start=0)
第一个参数为可迭代的数据,比如python中的list。
第二个参数为该函数打印标号的初始值
,默认从0开始打印,该函数返回一个enumerate类型的数据。参见下方实例:
albums = ('Poe', 'Gaudi', 'Freud', 'Poe2')
years = (1976, 1987, 1990, 2003)
#sorted:排序,与sort区别,sort仅能对列表进行排序
for album in sorted(albums):
print(album)
Freud
Gaudi
Poe
Poe2
#reversed:翻转
for album in reversed(albums):
print(album)
Poe2
Freud
Gaudi
Poe
#enumerate:返回项和
for i in enumerate(albums):
print(i)
(0, 'Poe')
(1, 'Gaudi')
(2, 'Freud')
(3, 'Poe2')
for i,name in enumerate(albums,1): # # 下标从 1 开始
print('index is %s,name is %s' %(i,name))
index is 1,name is Poe
index is 2,name is Gaudi
index is 3,name is Freud
index is 4,name is Poe2
#同时遍历两个或更多的序列,可以使用 zip() 组合
for i in zip(albums,years):
print(i)
('Poe', 1976)
('Gaudi', 1987)
('Freud', 1990)
('Poe2', 2003)
在字典中遍历时,关键字和对应的值可以使用
items() 方法
同时解读出来:
>>> knights = {'gallahad': 'the pure', 'robin': 'the brave'}
>>> for k, v in knights.items():
... print(k, v)
...
gallahad the pure
robin the brave
九九乘法表:
#九九乘法表
for i in range(1,10):
for j in range(1,i+1):
print("%d*%d=%d" % (j, i, i * j), end=' ') #将end='\n'设置为空格
print('') #默认换行
out:
1*1=1
1*2=2 2*2=4
1*3=3 2*3=6 3*3=9
1*4=4 2*4=8 3*4=12 4*4=16
1*5=5 2*5=10 3*5=15 4*5=20 5*5=25
1*6=6 2*6=12 3*6=18 4*6=24 5*6=30 6*6=36
1*7=7 2*7=14 3*7=21 4*7=28 5*7=35 6*7=42 7*7=49
1*8=8 2*8=16 3*8=24 4*8=32 5*8=40 6*8=48 7*8=56 8*8=64
1*9=9 2*9=18 3*9=27 4*9=36 5*9=45 6*9=54 7*9=63 8*9=72 9*9=81
5、for … else 语句
for 中的语句和普通的没有区别,
else 中的语句会在循环正常执行完(即 else不是通过 break 跳出而执行的,一旦执行break,会跳出for,同时也跳出了else
)的情况下执行,while … else 也是一样.
else 语句是不能脱离其他语句单独存在的。此处是与for共存:
for 循环正常执行结束后,else 语句里面的内容也会正常执行。当 for 循环被 break 中断后,其后的 else 语句就不执行了。
for num in range(10,20): # 迭代 10 到 20 之间的数字
for i in range(2,num): # 根据因子迭代
if num%i == 0: # 确定第一个因子
j=num/i # 计算第二个因子
print '%d 等于 %d * %d' % (num,i,j)
break # 跳出当前循环
else: # 循环的 else 部分
print num, '是一个质数'
out:
10 等于 2 * 5
11 是一个质数
12 等于 2 * 6
13 是一个质数
14 等于 2 * 7
15 等于 3 * 5
16 等于 2 * 8
17 是一个质数
18 等于 2 * 9
19 是一个质数