112 lines
2.9 KiB
Markdown
112 lines
2.9 KiB
Markdown
# python3小白课:for表达式
|
||
|
||
### for表达式基本使用
|
||
|
||
for表达式通常用于使用区间、元组、列表等可迭代对象来创建新的列表,在实战中的某些场景偶尔会用到,如果掌握比较困难,也可以不学这个。for表达式的语法如下:
|
||
|
||
```python
|
||
[表达式 for 循环变量 in 可迭代对象]
|
||
```
|
||
|
||
for表达式只有一行,跟一般的循环结构是有点区别的,我们对比一下,它将表达式放到了for的前面,表达式部分就是我们之前讲for-in循环时的执行体部分,然后我们还注意到,外面增加了一个`[]`,表示将生成的结果生成一个列表来包裹起来,最终返回一个列表,所以有时候我们也称之为列表推导式。
|
||
|
||
我们来看个小例子:
|
||
|
||
```python
|
||
# coding:utf-8
|
||
a = range(5)
|
||
# 我们来获取一下a这个列表每个元素的平方的新列表
|
||
b = [x * x for x in a]
|
||
print(b)
|
||
# 我们还能添加if条件在后面,满足条件元素为偶数的才计算
|
||
b = [x * x for x in a if x % 2 == 0]
|
||
print(b)
|
||
```
|
||
|
||
> [!question]
|
||
>
|
||
> 有的同学会想,如果我们将表达式的`[]`换成`()`是否可以呢?将列表换成元组,会生成一个元组吗?
|
||
|
||
我们来看一下。
|
||
|
||
```python
|
||
# coding:utf-8
|
||
a = range(5)
|
||
b = (x * x for x in a)
|
||
print(b)
|
||
print(type(b))
|
||
```
|
||
|
||
我们会发现,返回的是一个`generator`对象,这个对象是一个生成器,是可以迭代的,我们可以使用for-in循环迭代。
|
||
|
||
```python
|
||
# coding:utf-8
|
||
a = range(5)
|
||
b = (x * x for x in a)
|
||
for i in b:
|
||
print(i)
|
||
```
|
||
|
||
---
|
||
|
||
### for表达式支持嵌套
|
||
|
||
for表达式也支持嵌套,两层或者三层的循环嵌套也是可以的,当然如果有if条件的需要也可以加上。
|
||
|
||
```python
|
||
# coding:utf-8
|
||
# 我们拿稍微简单一点的两层循环嵌套来说明写法
|
||
a = [(x, y) for x in range(5) for y in range(3) if x > y]
|
||
print(a)
|
||
# 上述写法跟这样的写法是一样的:
|
||
a = []
|
||
for x in range(5):
|
||
for y in range(3):
|
||
if x > y:
|
||
a.append((x, y))
|
||
print(a)
|
||
```
|
||
|
||
看,是不是方便许多?
|
||
|
||
---
|
||
|
||
### zip压缩函数
|
||
|
||
这里我们小小的介绍一个有用的函数zip压缩函数。它可不是我们日常理解的一种压缩文件命令,而是可以将几个列表压缩成一个zip对象(可迭代对象),这样可以使用循环来并行遍历两个列表了。
|
||
|
||
我们来看个小小的例子:
|
||
|
||
```python
|
||
# coding:utf-8
|
||
a = ['a', 'b', 'c']
|
||
b = [4, 5, 6]
|
||
c = [x for x in zip(a, b)]
|
||
print(c)
|
||
```
|
||
|
||
可以看到,我们将两个列表压缩成了多个元组组合,最后再生成个列表,就是一个列表了。
|
||
|
||
如果两个列表成员数不一致会怎么样呢?
|
||
|
||
```python
|
||
# coding:utf-8
|
||
a = ['a', 'b', 'c']
|
||
b = [4, 5]
|
||
c = [x for x in zip(a, b)]
|
||
print(c)
|
||
```
|
||
|
||
可以看到效果是以短的列表为准来进行压缩。
|
||
|
||
这个函数大家知道一下即可。
|
||
|
||
|
||
|
||
### 单词释义
|
||
|
||
| 单词 | 释义 |
|
||
| ---- | ---- |
|
||
| zip | 压缩 |
|
||
|