4.4 KiB
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 | 进入 |