91 lines
2.1 KiB
Markdown
91 lines
2.1 KiB
Markdown
# 推导式
|
||
|
||
## 推导式详细格式
|
||
|
||
```plain
|
||
variable = [out_exp_res for out_exp in input_list if out_exp == 2]
|
||
out_exp_res: 列表生成元素表达式,可以是有返回值的函数。
|
||
for out_exp in input_list: 迭代input_list将out_exp传入out_exp_res表达式中。
|
||
if out_exp == 2: 根据条件过滤哪些值可以。
|
||
```
|
||
|
||
## 列表推导式
|
||
|
||
30以内所有能被3整除的数
|
||
|
||
```python
|
||
multiples = [i for i in range(30) if i % 3 == 0]
|
||
print(multiples)
|
||
```
|
||
|
||
30以内所有能被3整除的数的平方
|
||
|
||
```python
|
||
def squared(x):
|
||
return x*x
|
||
multiples = [squared(i) for i in range(30) if i % 3 == 0]
|
||
print(multiples)
|
||
```
|
||
|
||
找到嵌套列表中名字含有两个及以上‘a’的所有名字
|
||
|
||
```python
|
||
fruits = [['peach','Lemon','Pear','avocado','cantaloupe','Banana','Grape'],
|
||
['raisins','plum','apricot','nectarine','orange','papaya']]
|
||
print([name for lst in fruits for name in lst if name.count('a') >= 2])
|
||
```
|
||
|
||
## 字典推导式
|
||
|
||
将一个字典的key和value对调
|
||
|
||
```python
|
||
dic1 = {'a':1,'b':2}
|
||
dic2 = {dic1[k]: k for k in dic1}
|
||
print(dic2)
|
||
```
|
||
|
||
合并大小写对应的value值,将k统一成小写
|
||
|
||
```python
|
||
dic1 = {'a':1,'b':2,'A':4,'Y':9}
|
||
dic2 = {k.lower():dic1.get(k.lower(),0) + dic1.get(k.upper(),0) for k in dic1.keys()}
|
||
print(dic2)
|
||
```
|
||
|
||
## 集合推导式
|
||
|
||
计算列表中每个值的平方,自带去重功能
|
||
|
||
```python
|
||
l = [1,2,3,4,1,-1,-2,3]
|
||
squared = {x**2 for x in l}
|
||
print(squared)
|
||
```
|
||
|
||
## 练习题
|
||
|
||
1. 过滤掉长度小于3的字符串列表,并将剩下的转换成大写字母
|
||
2. 求(x,y)其中x是0-5之间的偶数,y是0-5之间的奇数组成的元祖列表
|
||
3. 将1000以内的素数放入一个列表中
|
||
4. 推导式实现九九乘法表
|
||
|
||
```python
|
||
print("\n".join(["\t".join([f"{i}x{j}={i*j}" for j in range(1, i+1)]) for i in range(1,10)]))
|
||
|
||
# 1x1=1
|
||
# 2x1=2 2x2=4
|
||
# 3x1=3 3x2=6 3x3=9
|
||
# 4x1=4 4x2=8 4x3=12 4x4=16
|
||
# 5x1=5 5x2=10 5x3=15 5x4=20 5x5=25
|
||
# 6x1=6 6x2=12 6x3=18 6x4=24 6x5=30 6x6=36
|
||
# 7x1=7 7x2=14 7x3=21 7x4=28 7x5=35 7x6=42 7x7=49
|
||
# 8x1=8 8x2=16 8x3=24 8x4=32 8x5=40 8x6=48 8x7=56 8x8=64
|
||
# 9x1=9 9x2=18 9x3=27 9x4=36 9x5=45 9x6=54 9x7=63 9x8=72 9x9=81
|
||
```
|
||
|
||
|
||
|
||
|
||
|