zoukankan      html  css  js  c++  java
  • Python学习(17)——推导式

    课程:推导式

    目标

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

    一. 列表推导式

    作用:用一个表达式创建一个有规律的列表或控制一个有规律列表。(简洁代码)

    列表推导式又叫列表生成式。

    1.1 快速体验

    需求:创建一个0-10的列表。

    • while循环实现
    # 1. 准备一个空列表
    list1 = []
    
    # 2. 书写循环,依次追加数字到空列表list1中
    i = 0
    while i < 10:
        list1.append(i)
        i += 1
    
    print(list1)
    
    • for循环实现
    list1 = []
    for i in range(10):
        list1.append(i)
    
    print(list1)
    
    • 列表推导式实现
    list1 = [i for i in range(10)]
    print(list1)
    

    1.2 带if的列表推导式

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

    • 方法一:range()步长实现
    list1 = [i for i in range(0, 10, 2)]
    print(list1)
    
    • 方法二:if实现
    list1 = [i for i in range(10) if i % 2 == 0]
    print(list1)
    

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

    需求:创建列表如下:

    [(1, 0), (1, 1), (1, 2), (2, 0), (2, 1), (2, 2)]
    
    • 代码如下:
    list1 = [(i, j) for i in range(1, 3) for j in range(3)]
    print(list1)
    

    二. 字典推导式

    思考:如果有如下两个列表:

    list1 = ['name', 'age', 'gender']
    list2 = ['Tom', 20, 'man']
    

    如何快速合并为一个字典?

    答:字典推导式

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

    2.1 快速体验

    1. 创建一个字典:字典key是1-5数字,value是这个数字的2次方。
    dict1 = {i: i**2 for i in range(1, 5)}
    print(dict1)  # {1: 1, 2: 4, 3: 9, 4: 16}
    
    1. 将两个列表合并为一个字典
    list1 = ['name', 'age', 'gender']
    list2 = ['Tom', 20, 'man']
    
    dict1 = {list1[i]: list2[i] for i in range(len(list1))}
    print(dict1)
    
    

    image

    # 注意假设数量不一样的情况下统计多的会报错如:
    list1 = ['name', 'age', 'gender', "id"]
    list2 = ['Tom', 20, 'man']
    
    list3 = {list1[i]: list2[i] for i in range(len(list1))}
    print(list3)
    
    

    image

    1. 提取字典中目标数据
    counts = {'MBP': 268, 'HP': 125, 'DELL': 201, 'Lenovo': 199, 'acer': 99}
    
    # 需求:提取上述电脑数量大于等于200的字典数据
    count1 = {key: value for key, value in counts.items() if value >= 200}
    print(count1)  # {'MBP': 268, 'DELL': 201}
    

    三. 集合推导式

    需求:创建一个集合,数据为下方列表的2次方。

    list1 = [1, 1, 2]
    

    代码如下:

    list1 = [1, 1, 2]
    set1 = {i ** 2 for i in list1}
    print(set1)  # {1, 4}
    

    注意:集合有数据去重功能。

    四. 总结

    • 推导式的作用:简化代码
    • 推导式写法
    # 列表推导式
    [xx for xx in range()]
    
    # 字典推导式
    {xx1: xx2 for ... in ...}
    
    # 集合推导式
    {xx for xx in ...}
    
  • 相关阅读:
    tuple 元组及字典dict
    day 49 css属性补充浮动 属性定位 抽屉作业
    day48 选择器(基本、层级 、属性) css属性
    day47 列表 表单 css初识
    day 46 http和html
    day 45索引
    day 44 练习题讲解 多表查询
    day 40 多表查询 子查询
    day39 表之间的关联关系、 补充 表操作总结 where 、group by、
    day38 数据类型 约束条件
  • 原文地址:https://www.cnblogs.com/rouehang/p/14605640.html
Copyright © 2011-2022 走看看