Python for循环详解:从基础遍历到高级技巧
本文深入解析Python中的for循环机制,涵盖字符串、列表、元组及字典的遍历方法。详细讲解range函数的参数用法,演示嵌套循环、列表推导式及for-else语句的高级应用,并提供九九乘法表等实战案例,帮助开发者掌握Python循环控制的核心技巧。
for语句的核心功能是处理循环逻辑。在多数高级编程语言中,for循环(for loop)都是实现重复执行代码的标准控制流结构。
在Python中,for语句专门用于处理可迭代对象,其核心目的是让代码块能够针对对象中的每个元素重复执行。参考维基百科的定义:
In computer science, a for-loop (or simply for loop) is a control flow statement for specifying iteration, which allows code to be executed repeatedly.(作用:介绍了for循环是什么?)
A for-loop has two parts: a header specifying the iteration, and a body which is executed once per iteration. (for循环是什么构成的?)
定义:在计算机科学中,它是针对特定迭代对象的控制流语句,用于重复执行代码。 构成:由指定迭代过程的头部(Header)和执行体(Body)组成,执行体在每次迭代中运行一次。

1、可迭代对象
1.1什么是可迭代对象
可迭代对象(Iteratable Object)是指能够依次返回其内部成员的对象。常见的字符串、列表、元组、集合和字典等均属于此类。获取这些对象后,即可通过for循环对其进行遍历操作。
通俗理解,任何支持循环遍历访问的对象,均可视为可迭代对象。
1.2怎么判断
如何判断一个Python对象是否具备可迭代性?通常可以使用isinstance()函数来检测对象是否属于可迭代类型。
from collections import Iterable

小结:在Python常见的数据类型中,数值类型是不可迭代的,而字符串、元组、列表和字典等均为可迭代对象。
2、字符串的for循环
通过一次遍历,可以打印出字符串中的每一个字符。
for i in "python":
print(i)
输出:
p y t h o n
再看另一个示例:
for i in "abcdefg":
print(i)
输出:
a b c d e f g
3、列表的for循环
无论是单层列表还是多层嵌套列表,均可通过for循环进行遍历和打印:
# 单层列表
a = ["小明","小红","小张","小王"]
for i in a:
print(i) # 打印列表中的每个元素
小明 小红 小张 小王
# 嵌套列表
b = ["小明","小红","小张","小王",[19,20,18,23]]
for i in b:
print(i)
小明 小红 小张 小王
[19, 20, 18, 23]
在上述示例中,最后一个元素作为一个整体被打印。如果希望将嵌套列表中的元素也逐一打印出来,该如何处理?
def qiantao(x): # 定义一个函数
for each in x: # 遍历每个原始列表中的每个元素
if isinstance(each, list): # 判断每个元素是否是列表:isintance
qiantao(each) # 如果是列表,递归执行函数qiantao()
else:
print(each) # 如果不是列表,就直接打印该元素
b = ["小明","小红","小张","小王",[19,20,18,23]]
# 调用函数,传入列表b
qiantao(b)
小明 小红 小张 小王 19 20 18 23
4、元组的for循环
元组(tuple)的遍历方式与列表类似:
t = ("小明","小红","小王")
for i in t:
print(i)
小明 小红 小王
5、字典的for循环
我们可以利用keys() 、values() 、items() 方法,分别遍历字典的键、值以及键值对。需要注意的是:默认情况下,遍历字典时迭代的是字典的键。首先定义一个字典:
d = {"name":"Peter","age":20,"sex":"male","address":"china"}
5.1keys()
遍历字典的所有键;
for i in d.keys(): # 遍历字典的键
print(i)
name age sex address
for i in d: # 默认就是遍历键的取值
print(i)
name age sex address
5.2 values()
遍历字典的所有值:
for i in d.values(): # 遍历字典的值
print(i)
Peter 20 male china
5.3 items()
同时遍历字典的键和值
for i in d.items(): # 遍历字典的值
print(i)
('name', 'Peter') ('age', 20) ('sex', 'male') ('address', 'china')
若需分别提取字典的键和值,可参考以下写法:
for k,v in d.items():
print(k + "--->" + str(v))
name--->Peter age--->20 sex--->male address--->china
6、range函数的for循环
range函数是 Python 内置函数,用于生成一系列连续整数,常与for循环配合使用。
range(start,stop,step)start:包含start,默认为0,可不写则默认为0stop:不包含stop,必须写- 步长
step可正可负,默认是1,不能为0
6.1基础案例
range(10) # 生成的是可迭代对象
range(0, 10)
默认开头是0
range(0,10)
range(0, 10)
指定开头为1
range(1,10)
range(1, 10)
下面是将结果展开成列表:
list(range(10)) # 不包含10(尾部)
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
指定步长为2:
list(range(0,10,2)) # 不包含10,步长是2
[0, 2, 4, 6, 8]
总结:range函数生成的序列包含头部(start)但不包含尾部(stop)。
for i in range(10):
print(i)
0 1 2 3 4 5 6 7 8 9
6.2找出100以内能够被5整除的数
for i in range(101): # 不包含101,0-100
if i % 5 == 0: # %表示求余数:余数为0则表示整除
print(i,end="、")
0、5、10、15、20、25、30、35、40、45、50、55、60、65、70、75、80、85、90、95、100、
6.3高斯求和
求出1到100的所有数之和
sum = 0
for i in range(1,101):
sum = sum + i # 每循环一次,sum就是这个数字
sum
5050
求出100以内奇数的和:
sum = 0
# 步长为2,从1开始:1,3,5,7...
for i in range(1,101,2):
sum = sum + i
sum
2500
求出100以内偶数的和:
sum = 0
# 步长为2,从2开始:2,4,6,8...
for i in range(2,101,2):
sum = sum + i
sum
2550
7、多个for语句
for语句内部还可以嵌套使用for语句:
for i in ["python","java","html"]:
for j in i:
print(i.upper(),j) # upper():将字母变成大写
PYTHON p PYTHON y PYTHON t PYTHON h PYTHON o PYTHON n JAVA j JAVA a JAVA v JAVA a HTML h HTML t HTML m HTML l
for i in [4,5,6]:
for j in [1,2,3]:
print(i*j) # 实现任意两个数的乘法
4 # 4*1 8 # 4*2 12 # 4*3 5 # 5*1 10 # 5*2 15 # 5*3 6 # 6*1 12 # 6*2 18 # 6*3
8、列表推导式
(1)前文提到能被5整除的数:使用for循环和if条件判断来解决。
five = [] # 定义空列表
for i in range(101): # 不包含101,0-100
if i % 5 == 0: # %表示求余数:余数为0则表示整除
five.append(i) # 添加到列表中
five
[0, 5, 10, 15, 20, 25, 30, 35, 40, 45, 50, 55, 60, 65, 70, 75, 80, 85, 90, 95, 100]
(2)使用列表推导式如何实现呢?
[x for x in range(101) if x % 5 == 0]
[0, 5, 10, 15, 20, 25, 30, 35, 40, 45, 50, 55, 60, 65, 70, 75, 80, 85, 90, 95, 100]
9、for-else
也许你熟悉if-else,但听说过for-else语句吗?这算是Python中一个相对冷门但实用的知识点。
for i in range(5):
print(i)
else:
print("结束")
0 1 2 3 4 结束
这意味着:for循环正常结束后,依然会执行else块中的语句。
for i in []:
print(i)
else:
print("结束")
结束
在下面的例子中,当i除以3的余数是2时,会触发break跳出并终止整个for循环,此时后续的else块将不会执行。
for i in range(10):
print(i)
if i % 3 == 2:
break
else:
print("结束")
0 1 2
10、实现三角阵列
for i in range(1,11):
for k in range(1,i):
print(k, end=" ")
print("\n")
1 1 2 1 2 3 1 2 3 4 1 2 3 4 5 1 2 3 4 5 6 1 2 3 4 5 6 7 1 2 3 4 5 6 7 8 1 2 3 4 5 6 7 8 9
如果我们想要倒过来,该如何实现呢?
for i in range(10,0,-1):
for k in range(1,i):
print(k, end=" ")
print("\n")
1 2 3 4 5 6 7 8 9 1 2 3 4 5 6 7 8 1 2 3 4 5 6 7 1 2 3 4 5 6 1 2 3 4 5 1 2 3 4 1 2 3 1 2 1
11、99乘法表
下面举个例子来说明如何实现99乘法表
for i in range(1,10):
for j in range(1,i+1): # 为了保证有4*4,也就是同个数字相乘的等式,需要让i出现,使用i+1
print('{}x{}={}'.format(j, i, i*j), end=" ") # end的结束符号用空格
print("\n")

到此这篇关于Python中的for循环详情的文章就介绍到这了,更多相关Python中的for循环内容请搜索本站以前的文章或继续浏览下面的相关文章希望大家以后多多支持本站!
免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。









