一、功能
for 循环提供了python中最强大的循环结构(for循环是一种迭代循环机制,而while循环是条件循环,迭代即重复相同的逻辑操作,每次操作都是基于上一次的结果,而进行的)
Python for循环可以遍历任何序列的项目,如一个列表或者一个字符串。
二、语法
for循环的一般格式如下:
for iter_var in iterable:
suite_to_repeat
注解:每次循环, iter_var 迭代变量被设置为可迭代对象(序列, 迭代器, 或者是其他支持迭代的对 象)的当前元素, 提供给 suite_to_repeat 语句块使用.
python for循环实例
msg="hello egon 666"
for i in (msg):
print(i)
for循环,利用索引遍历出每一个字符
执行结果如下
C:\Python36\python.exe C:/Users/张宁阳/Desktop/test/day7/作业.py
h
e
l
l
o
e
g
o
n
6
6
6
Process finished with exit code 0
View Code
遍历序列类型
name_list=['alex','eric','rain','xxx']
#通过序列项迭代
for i in name_list:
print(i)
#通过序列索引迭代
for i in range(len(name_list)):
print('index is %s,name is %s' %(i,name_list[i]))
#基于enumerate的项和索引
for i,name in enumerate(name_list,2):
print('index is %s,name is %s' %(i,name))
for循环遍历序列
遍历可迭代对象或迭代器:
迭代对象:就是一个具有next()方法的对象,obj.next()每执行一次,返回一行内容所有内容迭代完后,
迭代器引发一 个 StopIteration 异常告诉程序循环结束. for 语句在内部调用 next() 并捕获异常.
for循环遍历迭代器或可迭代对象与遍历序列的方法并无二致,只是在内部做了调用迭代器next(),并捕获异常,终止循环的操作
很多时候你根本无法区分for循环的是序列对象还是迭代器
>>> f=open('a.txt','r')
for i in f:
print(i.strip())
hello
everyone
sb
三、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):
... print(i)
...
0
1
2
3
4
注:for基于range()实现计数循环,range()生成可迭代对象,说明for循环本质还是一种迭代循环
你也可以使用range指定区间的值:
>>>for i in range(5,9) :
print(i)
5
6
7
8
>>>
您可以结合range()和len()函数以遍历一个序列的索引,如下所示:
>>>a = ['Google', 'Baidu', 'Runoob', 'Taobao', 'QQ']
>>> for i in range(len(a)):
... print(i, a[i])
...
0 Google
1 Baidu
2 Runoob
3 Taobao
4 QQ
>>>
View Code
四、for与break,continue,else
同while
#break
#continue
for i in range(10):
if i == 4:
# break
continue
print(i)
for+else
for i in range(10):
print(i)
break
else:
print('===>')
break、continue
五、实例
九九乘法表
for i in range(1,10):
for j in range(1,i+1):
print("%d*%d=%d" % (j, i, i * j), end=' ')
print(' ')
albums = ('Poe', 'Gaudi', 'Freud', 'Poe2')
years = (1976, 1987, 1990, 2003)
#sorted:排序
for album in sorted(albums):
print(album)
#reversed:翻转
for album in reversed(albums):
print(album)
#enumerate:返回项和
for i in enumerate(albums):
print(i)
#zip:组合
for i in zip(albums,years):
print(i)
复制代码
六、小结
- for循环为迭代循环
- 可遍历序列成员(字符串,列表,元组)
- 可遍历任何可迭代对象(字典,文件等)
- 可以用在列表解析和生成器表达式中
- break,continue,else在for中用法与while中一致