python for 循环
for语句实际上解决的是循环问题。在很多的高级语言中都有for循环(for loop)。
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循环是什么构成的?)
Python中,for语句是一种迭代控制流语句,可以用于遍历序列(如字符串、列表、元组、字典、集合)中的每个元素,或者执行指定次数的循环。for循环语句的语法结构如下:
for循环的执行顺序是从序列的第一个元素开始,依次遍历到最后一个元素;
可以通过range()函数来指定遍历序列的范围,比如range(5)表示遍历0~4的整数序列;
Python中的for循环通常不需要使用计数器,而是直接使用遍历序列中的元素;
for循环可以使用break和continue语句来控制循环的执行流程,其中break用于退出循环,而continue用于跳过某个元素继续执行下一个元素;
对于一些常见的序列类型(如字符串、列表等),可以使用内置函数len()获取序列的长度,从而确定for循环的遍历范围;
可以使用enumerate()函数来同时获取序列中的元素和它们的索引;
如果需要对多个序列进行遍历,可以使用zip()函数将它们组合成一个zip对象,然后再在for循环中依次取出每个元素;
循环次数的计算:要确保for循环的遍历范围正确,避免遗漏或重复访问序列中的元素。可以使用len()函数获取序列的长度,并配合range()、enumerate()或zip()等函数实现对序列的遍历;
循环变量的作用域:for循环中定义的变量只在循环体内部有效,在循环体外无法访问。因此需要根据实际需要进行变量的定义和赋值;
循环体的缩进:Python中使用缩进来表示代码块的层次结构,在for循环中必须正确缩进循环体,并保持一致的缩进风格;
注意循环控制语句的使用:可以使用break、continue等语句控制for循环的执行流程,但要避免滥用和误用,以免导致代码逻辑混乱或死循环等问题。
可迭代对象(Iteratable Object) 是能够一次返回其中一个成员的对象,比如我们常用的字符串、列表、元组、集合、字典等等之类的对象都属于可迭代对象,获取到这些对象我们就可以用for循环来进行操作。
简单来理解,任何你可以循环遍历的对象都是可迭代对象。
如何判断一个Python对象是不是可迭代对象?通常是使用 isinstance()函数来判断对象是否是可迭代对象。
from collections import Iterable
小结:在Python常见的数据对象中,只有数字是不可迭代的,字符串、元组、列表、字典等都是可迭代的
遍历打印字符串中的每个元素。
for i in "python":
print(i)
for i in "abcdefg":
print(i)
不管是单层列表还是多层的嵌套列表,我们都可以遍历打印出来:
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
元组tuple的循环和列表是类似的:
t = ("小明","小红","小王")
for i in t:
print(i)
我们使用keys() 、values() 、items() ,我们可以分别遍历字典的键、值和键值对。需要注意的是:遍历字典默认是遍历字典的键,先定义一个字典:
d = {
"name":"Peter","age":20,"sex":"male","address":"china"}
for i in d.keys(): # 遍历字典的键
print(i)
for i in d: # 默认就是遍历键的取值
print(i)
for i in d.values(): # 遍历字典的值
print(i)
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
my_dict = {
'a': 1, 'b': 2, 'c': 3}
for key, value in my_dict.items():
print(key, value)
输出结果:
a 1
b 2
c 3
range函数是 Python 内置函数,用于生成一系列连续整数,多用于 for 循环中。
注意:range函数是包含头部不包含尾部。