163 lines
4.4 KiB
Markdown
163 lines
4.4 KiB
Markdown
# python3小白课:for-in循环结构
|
||
|
||
### for-in循环结构
|
||
|
||
for-in循环一般用来遍历范围、列表、元组和字典等可迭代对象包含的元素。可迭代的意思是它可以多次调用获取。比如你有一个箱子,里面有40个球球,我定义,每次我喊你的名字`小白同学`的时候,你就会从箱子里给我拿一个球球出来,下一次喊你还是一样的拿球球。那么这个箱子就是一个可迭代对象了。
|
||
|
||
> [!note]
|
||
>
|
||
> 而遍历的含义就是将所有的可能的内容都枚举出来,for-in循环更适合做这样一个事情。
|
||
|
||
for-in循环的一般语法结构为:
|
||
|
||
```python
|
||
for 循环变量 in 字符串|范围|列表元组字典等:
|
||
执行体
|
||
```
|
||
|
||
循环变量我们不需要自己赋值,它在进入循环的时候,就会自动从后面的`字符串|范围|列表元组字典等`这些可迭代对象中取出1个来,赋值给循环变量,然后进入循环。这些可迭代对象通常的理解来说是有限的,因此会循环几次基本也是可定的。在执行体的部分我们可以执行代码,下一次进入循环时还会再次执行。在执行体的部分还能访问到`循环变量`的值,这样就可以做一些智能化的循环操作。
|
||
|
||
---
|
||
|
||
### for-in小例子
|
||
|
||
为了大家更快速的理解,我们还是拿之前的重要的话说三遍的例子来讲一下,之前我们是使用while循环完成的代码,这节课我们用可能更为合适这个场景的for-in循环来试一下。
|
||
|
||
```python
|
||
# coding:utf-8
|
||
a = "我是小白,我很白,重要的话说三遍"
|
||
for i in range(3):
|
||
print(a)
|
||
```
|
||
|
||
我们使用了range函数来生成了一个序列,它是可迭代对象,可以直接迭代使用。可以看到,这样写,我们的代码更为简洁。
|
||
|
||
---
|
||
|
||
### for-in遍历列表和元组和字符串
|
||
|
||
列表、元组可以直接被遍历到,我们来看下例子,这时候,循环变量代表取出来的元素,根据需要,可以做进一步判断处理:
|
||
|
||
```python
|
||
# coding:utf-8
|
||
a = [1, 2, 3]
|
||
b = (1, 2, 3)
|
||
for i in a:
|
||
print(i)
|
||
for i in b:
|
||
print(i)
|
||
```
|
||
|
||
字符串也能被遍历,遍历出来是每个字符:
|
||
|
||
```python
|
||
# coding:utf-8
|
||
a = "我是小白,little bai"
|
||
for i in a:
|
||
print(i)
|
||
```
|
||
|
||
你还可以使用索引来进行遍历,是另一种比较常见的写法:
|
||
|
||
```python
|
||
# 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()`这几个命令来获取字典的情况:
|
||
|
||
```python
|
||
# 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)
|
||
```
|
||
|
||
通过字典,我们还可以统计列表中不同元素出现的次数。
|
||
|
||
```python
|
||
# 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代码段中的内容了。
|
||
|
||
我们来看个例子:
|
||
|
||
```python
|
||
# 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 | 进入 | |