目录

Python基础语法(13)推导式

Python基础语法(13)推导式

有推导式知识点的只有列表、字典、集合,推导式可以化简代码,让代码量更少。

学习目标

  • 列表推导式
  • 字典推导式
  • 集合推导式

列表推导式(常用)

作用:用一个表达式创建一个有规律的列表,或者控制一个有规律的列表。

实验:创建一个1-10的列表

1
2
3
4
5
6
7
# while循环创建列表
list1 = []
i = 0
while i < 10:
  list1.append(i+1)
  i += 1
print(list1)  # [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
1
2
3
4
5
# for循环创建列表
list1 = []
for i in range(10):
  list1.append(i+1)
print(list1)  # [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
1
2
3
# 列表推导式创建列表
list1 = [i+1 for i in range(10)] # 第一个i是后面表达式返回的数据,第二个i是range(10)所取的数据
print(list1)

带if的列表推导式

需求:创建0-10的偶数列表

  1. 方法一:使用普通的列表推导式在range()中加入步长实现。

    1
    2
    
    list1 = [i for i in range(0,10,2)]
    print(list1)
    
  2. 方法二:使用带if的列表推导式。

    1
    2
    
    list1 = [i for i in range(10) if i%2==0]
    print(list1)
    

多个for循环实现的列表推导式

需求:创建一个列表:[(1,0), (1,1), (1,2), (2,0), (2,1), (2,2)]

  1. 方法一:使用普通for语句。

    1
    2
    3
    4
    5
    6
    
    list1 = []
    for i in range(1,3):
        for j in range(3):
            t = (i,j)
            list1.append(t)
    print(list1)
    
  2. 方法二:使用多个for循环实现的列表推导式。

    1
    2
    
    list1 = [(i,j) for i in range(1,3) for j in range(3)]
    print(list1)  # 多个for的循环嵌套可以用该推导式实现
    

字典推导式(常用)

作用:快速合并列表为字典或提取字典中的目标数据。

  • 实验:创建一个字典,key是1-5数字,value是这个数字的2次方。

    1
    2
    
    dict1 = {i: i**2 for i in range(1,5)}
    print(dict1)
    
  • 实验:将两个列表合并为一个字典。

    1
    2
    3
    4
    
    list1 = ['name', 'age', 'gender']
    list2 = ['John', 21, 'male']
    dict1 = {list1[i]: list2[i] for i in range(len(list1))}
    print(dict1)
    

    ⚠️注意:如果两个列表长度不一,以数据多的列表为len函数基准会报错,如果以数据少的列表为基准,则不会。

  • 实验:提取字典中的目标数据。

    1
    2
    3
    4
    5
    6
    7
    
    counts = {'wang' : 11, 'liu': 123, 'peng': 99}
    # 找到大于等于100的
    out1 = {key: value for key, value in counts.items() if value >= 100 }
    print(out1)
    
    
    
    

集合推导式

作用:快速创建一个集合。

实验:以列表[1,1,2]数据的二次方创建一个集合。

1
2
3
list1 = [1, 1, 2]
set1 = {i**2 for i in list1}
print(set1)  # 集合去重

总结

  • 推导式适用的三种数据序列:列表、字典、集合

  • 推导式的主要作用:简化代码,快速创建;列表推导式的作用是快速创建列表,字典推导式的作用是列表合并为字典,或者是提取字典中的数据。

  • 推导式的写法:

    1
    2
    3
    4
    5
    6
    
    # 列表
    [xx for xx in range()]
    # 字典
    {xx: yy for ... in ...}
    # 集合
    {xx for xx in ...}
    
  • ⚠️注意:在列表合并为一个字典的时候,最好以列表数据少的那个为基准,集合推导式适用时注意去重。