Python入门--for...遍历循环

一、for 循环简介

for 为遍历循环,可以遍历任何序列,如 list,tuple,迭代器等。

for 的语句格式如下:

for  <变量>   in   <循环序列>:
【循环体】

释:通过 for 循环依次将 <循环序列> 中的数据取出赋值给 <变量>,再通过【循环体】进行处理。

示例1:for 循环访问列表

# for 循环访问列表
list = ['woodman', 'Alan', 'Bobo']
for name in list:
print(name)
输出结果:
woodman
Alan
Bobo

注意: name 这个变量是在 for 循环中定义的,意思是,依次取出 list 中的每一个元素,并把元素赋值给 name,然后执行for循环体。

示例2: for 循环访问字典

dict = {'woodman': 98, 'Alan': 89, 'Bobo': 56}
for key, value in dict.items():
print(key, value)

输出结果:

Alan 89
woodman 98
Bobo 56

示例3: for 循环访问字符串

# for 循环访问字符串,可以依次读取每个字符
for char in 'woodman木头人':
print(char)
输出结果:
w
o
......

注意:中文字符占2~3个字节(由编码决定,utf-8占3字节),每个中文字符是一个值

二、for ... else ... (比较少用到)

for ... else ... 格式:

for  <变量>   in   <循环序列>:
【循环体】
else:
【else的语句块】

释:for 遍历序列,无 break 结束当前循环,循环结束后执行 else 语句块

示例1:

list = ['woodman', 'Alan', 'Bobo']
for name in list:
print(name)
else:
print('循环完整结束后执行')
输出结果:
woodman
Alan
Bobo
循环完整结束后执行

示例2:

list = ['woodman', 'Alan', 'Bobo']
for name in list:
print(name)
if name == 'Alan':
break # break 结束循环,for 下的 else 也不会执行
else:
print('循环完整结束后执行')
输出结果:
woodman
Alan

示例3:

list = ['woodman', 'Alan', 'Bobo']
for name in list:
if name == 'Alan':
continue # continue 跳过本次循环,进入下一次循环
print(name) # 如果被 continue 本条语句不会执行
else:
print('循环完整结束后执行')

输出结果:

woodman
Bobo
循环完整结束后执行

注意:continue 只是跳过本次循环,循环结束后 else 语句块最后被执行

三、for 循环嵌套

循环嵌套为循环中嵌套另外一层循环。

for <外层循环变量> in <外层循环序列>:
for <内层循环变量> in <内层循环序列>:
【内层循环体】
【外层循环体】

这个只是一个for 与 for 的循环嵌套,你可以使用 for 与 while 嵌套。

循环嵌套经典示例1:倒三角的九九乘法表

# 九九乘法表 倒三角,你可以试试输出正三角
for i in range(1, 10): # range()请看本章第五部分
for j in range(i, 10):
print('%d * %d = %d' % (i, j, i * j), end='\t')
print('') # 控制换行

循环嵌套经典示例2:冒泡排序

# 冒泡排序
list = [9, 2, 7, 4, 5, 6, 3, 8, 1, 10]
length = len(list)
for i in range(length):
for j in range(length - i):
if list[length - j - 1] < list[length - j - 2]:
list[length - j - 1], list[length - j - 2] = list[length - j - 2], list[length - j - 1]
print(list)

四、for循环访问迭代对象

1、迭代器简介

Python 的 for 循环不仅可以用在 list 或 tuple 上,还可以作用在其他任何可迭代对象上。

迭代操作就是对于一个集合操作,无论该集合是有序还是无序,我们用 for 循环总是能依次取出集合中的每一个元素。

释义: 集合是指包含一组元素的数据结构,它包括:
有序集合:list,tuple,str和unicode;
无序集合:set
无序集合并且具有 key-value 对:dict(Python3.6后字典为有序)

迭代器有两个基本的方法:iter() 和 next()

iter() 创建一个迭代器

next() 访问迭代元素,访问后指针向下移一行

示例:

>>>list=[0,1,2,3,4]
>>> it = iter(list) # 创建迭代对象
>>> print (next(it)) # 访问当前指针元素,结束后指针向下移一步
0
>>> print (next(it)) #
1
>>>

 

2、for循环访问迭代器

示例:

list = ['woodman', 'Alan', 'Bobo']
it = iter(list) # 创建迭代器对象
for name in it: # 循环访问迭代器
print(name)

注意:迭代器访问数据比通过索引循环访问速度更快,数据量大时一般会使用迭代器

五、range ( ) 类控制循环访问

range ( ) 为 Python 的自有类,range() 带有内置的迭代方法__iter__() 和 __next()__ ,它是一个可迭代对象,我们可以通过 for 访问 range() 创建的迭代器。

range 类初始化参数说明:

range(stop) 从0开始到stop结束(不包含 stop)返回一个产生整数序列的迭代对象

range(start, stop[, step]) 从 start 开始到 stop 结束(不包含 stop)返回一个整数序列的迭代对象, step 为他的步长

示例1:

for i in range(5):
print(i, end='-')
输出:0-1-2-3-4-

示例2 :

for i in range(1,5):
print(i, end='-')
输出:1-2-3-4-

示例3:

for i in range(1,5,2):
print(i, end='-')
输出:1-3-

示例4:

for i in range(-1,-5,-2):
print(i)
输出结果
-1
-3

注意:start, stop, step 三个参数可以为负数

示例5:

# 结合range()和len()函数以遍历一个序列的索引,如下所示.
list = ['woodman', 'Alan', 'Bobo']
for i in range(len(list)):
print(i,list[i])
输出结果:
0 woodman
1 Alan
2 Bobo

注意:for 循环可作用的迭代对象远不止 list,tuple,str,unicode,dict 等,任何可迭代对象都可以作用于 for 循环,而内部如何迭代我们通常并不用关心。

通常可迭代对象一般具备 iter() 和 next() 方法或者 __iter__() 和 __next()__ 方法。

有相同爱好的可以进来一起讨论哦:企鹅群号:1046795523

学习视频资料:http://www.makeru.com.cn/live/1392_1164.html?s=143793

posted @ 2020-09-21 13:48  欧清辣哨  阅读(1726)  评论(0编辑  收藏  举报