python3xiaobaike_2020/chapter4/4-3 python3小白课:for-in循环结构.md
2025-04-20 23:22:14 +08:00

4.4 KiB
Raw Permalink Blame History

python3小白课for-in循环结构

for-in循环结构

for-in循环一般用来遍历范围、列表、元组和字典等可迭代对象包含的元素。可迭代的意思是它可以多次调用获取。比如你有一个箱子里面有40个球球我定义每次我喊你的名字小白同学的时候,你就会从箱子里给我拿一个球球出来,下一次喊你还是一样的拿球球。那么这个箱子就是一个可迭代对象了。

Note

而遍历的含义就是将所有的可能的内容都枚举出来for-in循环更适合做这样一个事情。

for-in循环的一般语法结构为

for 循环变量 in 字符串|范围|列表元组字典等:
    执行体

循环变量我们不需要自己赋值,它在进入循环的时候,就会自动从后面的字符串|范围|列表元组字典等这些可迭代对象中取出1个来赋值给循环变量然后进入循环。这些可迭代对象通常的理解来说是有限的因此会循环几次基本也是可定的。在执行体的部分我们可以执行代码下一次进入循环时还会再次执行。在执行体的部分还能访问到循环变量的值,这样就可以做一些智能化的循环操作。


for-in小例子

为了大家更快速的理解我们还是拿之前的重要的话说三遍的例子来讲一下之前我们是使用while循环完成的代码这节课我们用可能更为合适这个场景的for-in循环来试一下。

# coding:utf-8
a = "我是小白,我很白,重要的话说三遍"
for i in range(3):
    print(a)

我们使用了range函数来生成了一个序列它是可迭代对象可以直接迭代使用。可以看到这样写我们的代码更为简洁。


for-in遍历列表和元组和字符串

列表、元组可以直接被遍历到,我们来看下例子,这时候,循环变量代表取出来的元素,根据需要,可以做进一步判断处理:

# coding:utf-8
a = [1, 2, 3]
b = (1, 2, 3)
for i in a:
    print(i)
for i in b:
    print(i)

字符串也能被遍历,遍历出来是每个字符:

# coding:utf-8
a = "我是小白little bai"
for i in a:
    print(i)

你还可以使用索引来进行遍历,是另一种比较常见的写法:

# coding:utf-8
a = [1, 2, 3]
b = (1, 2, 3)
c = "我是小白little bai"
for i in range(len(a)):
    print(a[i])
for i in range(len(b)):
    print(b[i])
for i in range(len(c)):
    print(c[i])

for-in遍历字典

字典是键值对的形式的,但我们可以通过items()、keys()、values()这几个命令来获取字典的情况:

# coding:utf-8
a = {"语文": 90, "数学": 89, "英语": 95}
for key, value in a.items():
    print("key: %s" % key)
    print("value: %s" % value)
print("*" * 40)
for key in a.keys():
    print("key: %s" % key)
print("*" * 40)
for value in a.values():
    print("value: %s" % value)
print("*" * 40)

通过字典,我们还可以统计列表中不同元素出现的次数。

# coding:utf-8
a = [1, 2, 3, 4, 2, 3, 4, 2, 3, 4, 5, 6, 6, 4, 4, 5, 6, 7, 4]
a_dict = {}
for key in a:
    a_dict[key] = a_dict.get(key, 0) + 1
print("a_dict:", a_dict)

在循环结构中使用else

循环结构也是支持else语句的这是在python中相它编程语言一种比较特别的语法在实际使用中可能比较少使用吧。它使用后的逻辑为当while或者for-in循环的循环体中没有遇到break语句强制退出时会执行else代码段中的内容但循环是通过break强制退出的话那么就不会执行else代码段中的内容了。

我们来看个例子:

# coding:utf-8
i = 0
while i < 3:
    print(i)
    if i == 2:
        break
    i += 1
else:
    print("enter")

print("*" * 40)

i = 0
while i < 3:
    print(i)
    i += 1
else:
    print("enter")

print("*" * 40)

i = 0
for i in range(3):
    print(i)
    if i == 2:
        break
else:
    print("enter")

print("*" * 40)

i = 0
for i in range(3):
    print(i)
else:
    print("enter")

如果有需要,那可以考虑使用这种结构,但我个人也极少会使用到。

单词释义

单词 释义
for-in for in两个单词组成的结构意思为对于xx在xx里面
enter 进入