说明
《Python 教程》 持续更新中,提供建议、纠错、催更等加作者微信: gairuo123(备注:pandas教程)和关注公众号「盖若」ID: gairuo。跟作者学习,请进入 Python学习课程。欢迎关注作者出版的书籍:《深入浅出Pandas》 和 《Python之光》。
for 循环是从一个可迭代的对象(可以是我们指定的元素)中每次取出一个一一执行,直到全部处理执行完,处理过程可搭配 if 系列进行逻辑分支执行。
For 循环的结构如下:
for <变量> in <可迭代对象>:
<逻辑代码>
执行流程如下:
此处的可迭代对象可以理解为一个序列,可以拆开的内容,如字符串(每个字串)、列表、字典、集合等等。
如果第一个内容又可以拆开,可以在 <变量> 处定义指定数量的变量,如字典可以字典 k, v
然后在<逻辑代码>中分别用 k 和 v 代表键和值。
一般我们只让 for 做一定次数的事,可以用 range(10)
,它也是一个典型的可迭代对象。
如果,for 中的变量在逻辑代码中不使用,可以用 _
代替,比较规范。
for _ in range(3):
print('你能学会 python.')
print('重要的事说三遍!')
# 你能学会 python.
# 你能学会 python.
# 你能学会 python.
# 重要的事说三遍!
也可以看以下图示进行理解:
for i in [1,2,3,5]:
print(i)
else:
print('执行结束')
# 1
# 2
# 3
# 5
# 执行结束
语法说明:
for, in, else
迭代字典:
tom = {'name': 'Tom', 'age': 18, 'height': 180}
for k,v in tom.items():
print(k, v)
# name Tom
# age 18
# height 180
迭代列表(与上边字典做下对比):
tom = [('name', 'Tom'), ('age', 18), ('height', 180)]
for k,v in tom:
print(k, v)
# name Tom
# age 18
# height 180
# 也可以得到和上边一样的结果
for i in tom:
print(i[0], i[1])
可以和之前我们学过的条件分支进行嵌套:
for i in range(100):
if i*2 - i == 10:
print(i)
# 10
100 以内的偶数相加:
num = 0
for x in range(101):
if x%2 == 0:
num = num + x
print(num)
自身嵌套:
a = [(1,2,3), (4,5,6)]
for i in a:
for x in i:
print(x)
生成列表,列表推导式:
# 生成偶数列表
var = [i for i in range(3)]
# [0, 1, 2]
生成字典
# 生成偶数字典,值乘于 10
var = {i:i*10 for i in range(10) if i%2}
# {1: 10, 3: 30, 5: 50, 7: 70, 9: 90}
for 语句用于对序列(例如字符串、元组或列表)或其他可迭代对象中的元素进行迭代:
for_stmt ::= "for" target_list "in" starred_list ":" suite
["else" ":" suite]
starred_list 表达式会被求值一次;它应当产生一个 iterable 对象。 将针对该可迭代对象创建一个 iterator。 随后该迭代器所提供的第一个条目将使用标准的赋值规则被赋值给目标列表 (参见 赋值语句),而代码块将被执行。 此过程将针对该迭代器所提供每个条目重复进行。 当迭代器被耗尽时,如果存在 else 子句中的代码块,则它将被执行,并终结循环。
第一个子句体中的 break 语句在执行时将终止循环且不执行 else 子句体。 第一个子句体中的 continue 语句在执行时将跳过子句体中的剩余部分并转往下一项继续执行,或者在没有下一项时转往 else 子句执行。
for 循环会对目标列表中的变量进行赋值。 这将覆盖之前对这些变量的所有赋值,包括在 for 循环体中的赋值:
for i in range(10):
print(i)
i = 5 # this will not affect the for-loop
# because i will be overwritten with the next
# index in the range
目标列表中的名称在循环结束时不会被删除,但是如果序列为空,则它们将根本不会被循环所赋值。 提示:内置类型 range() 代表由整数组成的不可变算数序列。 例如,迭代 range(3) 将依次产生 0, 1 和 2。
在 3.11 版更改: 现在允许在表达式列表中使用带星号的元素,即:
a = range(3)
b = {7, 8, 9}
for x in *a, *b:
print(x)
'''
0
1
2
8
9
7
'''
参见:
更新时间:2023-12-23 18:53:35 标签:python for